您认为哪种方式更适合异常处理,if
语句或Try/Catch
阻止?
因为,如您所知,所有异常都可以使用if
语句来处理。
答案 0 :(得分:1)
这取决于具体情况。我会试着解释一下。
考虑这个简单的例子:
try {
myVar.myFunc();
}
catch(NullPointerException e) {
//bla bla
}
或强>
if (myVar != null)
myVar.myFunc();
如果myVar
可以null
作为代码流的一部分,那么您可以使用if
语句,否则您应该使用该异常,因为它可能是由于不受你的控制。
答案 1 :(得分:0)
好吧,根据我的理解,你的意思是if / else语句,函数的返回值将是SUCCESS或FAILURE,所有实际工作都将在函数的参数上完成。
这是一种C风格的编码 - 没有例外。
在java中,因为你不能通过引用(或指针)传递元素,这种方法是有问题的(你必须为返回int
,非常优雅的方法创建一个包装器,甚至在C中 - 它更像是一种优雅的东西。
示例 - C样式代码可以执行:
int calcSomething(int arg1, int arg2, int* result) {
//calcualtions
if (...) return FAILURE;
*result = ...
return SUCCESS;
}
编码环境将是:
if (calcSomething(...) == FAILURE) { handleError(); }
注意 - 该方法在java中并不完全是diasppear,例如Collection#add()
返回一个boolean
,指示操作是否成功。它主要用于false
值实际上不是错误的操作 - 更多的表示没有任何事情要做。
每当“错误”被阻塞时 - 使用异常进行错误处理 - 它们的可读性更高,并且可以更好地维护代码。如果它只是一个指示(对于eaxmple - 元素已经在集合中) - 返回值中的布尔值就可以了。