14 java exception try-catch nullpointerexception
我问这个关于Java的主题,但我想它适用于许多语言.
考虑,
if(myVariable==null){
doSomethingAboutIt();
}
else carryOn(myVariable);
Run Code Online (Sandbox Code Playgroud)
和
try{
carryOn(MyVariable);
}catch(NullPointerException e ){
doSOmethingAboutIt();}
Run Code Online (Sandbox Code Playgroud)
这两个代码块是否基本相同?有没有理由选择第二种方法?当然,更好的是myVariable永远不会为null,但似乎检查它的最佳方法是做一个简单的if语句.
Mak*_*oto 10
从我的立场来看,我犹豫是否认为这两个代码块在意图上是等价的.当然,他们经历了相同的错误处理,但这是开发人员的决定,而不是其他任何事情.
对我而言,if
正在测试是否可以使用某个值,如果不能,则会解决该问题.该try...catch
块假设该值是有效的,如果不是,则它会通过解决异常行为.
当出现异常的,破坏程序的代码(除零等)时,应首先考虑例外情况.
不,这些代码块根本不一样。
在第一个代码块中,您正在检查 if myVariable
is null
,并且您只在一个时间点执行此操作。稍后,myVariable
可能会变成null
并最终抛出一个NullPointerException
. 如果发生这种情况,第二个代码片段将捕获异常,但第一个不会。
此外,第二个代码片段将捕获NullPointerExceptions
可能从调用产生的调用堆栈中的任何地方抛出的内容carryOn(myVariable)
。这太可怕了;你正在吞下一个异常,假设一个特定的变量null
可能完全是别的东西。
使用第一个代码片段。
归档时间: |
|
查看次数: |
42992 次 |
最近记录: |