精华帖 (0) :: 良好帖 (1) :: 新手帖 (5) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-11-19
最后修改:2008-11-19
虽然可以在使用对象前检查是否为空,但过多的这种检查会使代码臃肿。 出现这样的异常的时候常常没有明确的信息,给调试带来不便, 即使知道抛出异常的代码行号,但或许因为你手头没有代码,或许因为这行代码有多次方法调用, 而很难得到错误的原因或是判断究竟什么对象是空。 我觉得这是JVM的失职,它只是抛出了没有任何信息的NullPointerException, 为什么不追加“调用XXX方法时,发现对象不可用”的信息呢 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-11-19
性能下降30%的代价你能负担么?
|
|
返回顶楼 | |
发表时间:2008-11-19
会差那么多吗,类加载后在常量池中不是保存有方法的名称吗。
|
|
返回顶楼 | |
发表时间:2008-11-19
你所有设计引用指针的方法都要做这个检查。
这就和当年vector一个问题了不是。 |
|
返回顶楼 | |
发表时间:2008-11-19
repsihWDX 写道 你所有设计引用指针的方法都要做这个检查。
这就和当年vector一个问题了不是。 我不是说在自己的代码中追加检查, 而是说JVM检查到调用空对象方法的时候只是抛出了没有任何信息的NullPointerException 这样对调试非常不利, JVM是否应该追加一些信息。 |
|
返回顶楼 | |
发表时间:2008-11-19
已然有堆栈冒泡出来了。。你还需要堆栈给你什么信息?
你打印堆栈就能看到清晰的调用树了啊。。 |
|
返回顶楼 | |
发表时间:2008-11-19
我在1楼已经写清楚了,
“但或许因为你手头没有代码,或许因为这行代码有多次方法调用” 那么你将不知道是什么对象为空 |
|
返回顶楼 | |
发表时间:2008-11-19
对象是null,没有带类型信息,jvm恐怕也没办法给出是什么对象。
在很多需要判断null地方,最好还是采用Null Object模式 |
|
返回顶楼 | |
发表时间:2008-11-19
dennis_zane 写道 对象是null,没有带类型信息,jvm恐怕也没办法给出是什么对象。
在很多需要判断null地方,最好还是采用Null Object模式 对象类型是无法给出了,不过调用的方法名我想应该有办法得到, 多谢提供Null Object模式的信息。 |
|
返回顶楼 | |
发表时间:2008-11-19
还是不太理解你的问题。
NullpointerException 堆栈中肯定包含了对应的对应方法调用信息的啊。。。最后会深入到哪一行的啊。虽然jsp这样的没法调试,但写java代码行标识还是很准确的吧。。 |
|
返回顶楼 | |