精华帖 (0) :: 良好帖 (1) :: 新手帖 (5) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-11-19
重构与模式-------空指针模式
|
|
返回顶楼 | |
发表时间:2008-11-19
最后修改:2008-11-19
引用 还是不太理解你的问题。
NullpointerException 堆栈中肯定包含了对应的对应方法调用信息的啊。。。最后会深入到哪一行的啊。虽然jsp这样的没法调试,但写java代码行标识还是很准确的吧。。 如果那行代码是obj.getAAA().getBBB().getCCC()你就不知道具体是哪个出问题了吧 |
|
返回顶楼 | |
发表时间:2008-11-19
jeff.chuh 写道 引用 还是不太理解你的问题。
NullpointerException 堆栈中肯定包含了对应的对应方法调用信息的啊。。。最后会深入到哪一行的啊。虽然jsp这样的没法调试,但写java代码行标识还是很准确的吧。。 如果那行代码是obj.getAAA().getBBB().getCCC()你就不知道具体是哪个出问题了吧 我个人觉得这是写法问题。。。 |
|
返回顶楼 | |
发表时间:2008-11-19
它不是有exception值栈吗,不就可以看到错在哪儿了?
|
|
返回顶楼 | |
发表时间:2008-11-19
jeff.chuh 写道 由于程序的不严密而出现NullPointerException异常的代码太常见了
1 你为啥不提高对自己的要求,让代码严密些呢 2 单元测试就是为此而生的 3 jvm给了你异常处理,还有客制化这些信息的自由 |
|
返回顶楼 | |
发表时间:2008-11-19
jeff.chuh 写道 我觉得这是JVM的失职,它只是抛出了没有任何信息的NullPointerException, 为什么不追加“调用XXX方法时,发现对象不可用”的信息呢 异常堆栈里已经明确指出了。`````不知道LZ是用什么样的格式写error log的 |
|
返回顶楼 | |
发表时间:2008-11-19
jeff.chuh 写道 由于程序的不严密而出现NullPointerException异常的代码太常见了,
虽然可以在使用对象前检查是否为空,但过多的这种检查会使代码臃肿。 出现这样的异常的时候常常没有明确的信息,给调试带来不便, 即使知道抛出异常的代码行号,但或许因为你手头没有代码,或许因为这行代码有多次方法调用, 而很难得到错误的原因或是判断究竟什么对象是空。 我觉得这是JVM的失职,它只是抛出了没有任何信息的 NullPointerException, 为什么不追加“调用XXX方法时,发现对象不可用”的信息呢 为什么必须要单独给NullPointerException加上“调用XXX时”呢?其他的Exception不需要加么? 因为从stack trace中就能得到方法调用的信息 try { ... } catch (Exception e) { log.debug(e); // 或者简单地e.printStackTrace() } |
|
返回顶楼 | |
发表时间:2008-11-19
design by contrat,这样的工具多了去了。
|
|
返回顶楼 | |
发表时间:2008-11-19
可以参考guice里面对错误信息的处理方式
|
|
返回顶楼 | |
发表时间:2008-11-19
就算是getA().getB().getC()的语句,异常栈也可以清晰指出具体抛出异常的方法。
|
|
返回顶楼 | |