-3

if在您看来,语句或Try/Catch块哪种方式更适合异常处理?

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

4

2 回答 2

1

这取决于实际情况。我会尽力解释。

考虑这个简单的例子:

try {
  myVar.myFunc();
} 
catch(NullPointerException e) {
  //bla bla
}

或者

if (myVar != null) 
   myVar.myFunc();

如果myVar可以null作为您的代码流的一部分,那么您可以使用if语句,否则您应该使用异常,因为它可能是由于您无法控制的事情引起的。

于 2013-01-17T12:34:52.767 回答
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 中并没有完全消失,例如Collection#add()返回一个boolean指示操作是否成功的方法。它主要用于false值不是真正错误的操作 - 更多的是表明无事可做。

每当“错误”被阻塞时——使用异常处理错误——它们的可读性更高,代码的可维护性更好。如果它只是一个指示(对于 eaxmple - 元素已经在集合中) - 返回值中的布尔值就可以了。

于 2013-01-17T12:30:51.483 回答