Dre*_*rew 57 java nullpointerexception
最近我的一个同事用一些代码写了一个代码来捕获整个方法的空指针异常,然后返回一个结果.我指出了空指针有多种原因,所以我们将其改为对一个结果进行防御性检查.
但是,捕获NullPointerException似乎对我来说不对.在我看来,Null指针异常是错误代码的结果,而不是系统中的预期异常.
是否有任何情况下捕获空指针异常是有意义的?
Joa*_*uer 36
是的,捕捉任何东西RuntimeException几乎总是代码味道.该C2维基似乎都同意.
一个例外可能是一些特别防御的代码片段,它们运行来自其他模块的大量随机代码.这种防御结构的例子是EDT,ThreadPools/Executors和插件系统.
Jef*_*dge 24
我可以想到一个用于永远捕获的用途NullPointerException:
catch (NullPointerException) {
ApplyPainfulElectricShockToProgrammer();
}
Run Code Online (Sandbox Code Playgroud)
She*_*ari 15
由于第三方库中的错误,我有时必须捕获nullpointer异常.我们使用的库抛出了这个异常,我们无能为力.
在这种情况下,抓住它是可以的,否则不会.
这取决于.
这位同事的经验如何?他这样做是为了无知/懒惰还是有一个真正的理由呢?(就像这是主要线程高于一切,永远不应该死?)
捕获运行时异常的90%是错误的,99%捕获NullPointerException是错误的(如果原因是"我得到了很多......" 那么整个程序员都错了,你应该看看照顾他正在做的其余代码)
但在某些情况下,捕获NullPointerException可能是可以接受的.