我问的主要是关于 Java 的,但我想它适用于所有语言。
考虑一下,
if(myVariable==null){
doSomethingAboutIt();
}
else carryOn(myVariable);
和
try{
carryOn(MyVariable);
}
catch(NullPointerException e ){
doSOmethingAboutIt();
}
这两个代码块本质上是一样的吗?有什么理由选择第二种方法吗?当然,如果 myVariable 永远不为 null 会更好,但检查它的最佳方法似乎是执行一个简单的 if 语句。
最佳答案
从我的立场来看,我犹豫是否认为这两个代码块在意图上是等价的。当然,它们会经历相同的错误处理,但这是开发人员的决定,而不是其他任何事情。
对我来说,if
是测试 以查看某个值是否可以使用,如果不能,它正在解决这个问题。 try...catch
block 假设该值有效,如果无效,它就会失败以解决异常行为。
当出现异常的、破坏程序的代码(被零除等)时,应主要考虑异常。
关于java - 捕获空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8965988/