异常处理,如果语句或Try / Catch块?

时间:2013-01-17 12:22:23

标签: java exception for-loop try-catch

您认为哪种方式更适合异常处理,if语句或Try/Catch阻止?

因为,如您所知,所有异常都可以使用if语句来处理。

2 个答案:

答案 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 - 元素已经在集合中) - 返回值中的布尔值就可以了。