我的函数是否可以显示错误消息并返回布尔值?

时间:2016-01-08 20:09:03

标签: java exception-handling

如果存在某种错误,我正在创建一个返回true或false的函数。目前,如果发生错误,则会显示带有错误的弹出窗口,并且该函数返回false。如果没有错误,那么它只返回true。

我的问题是: 可以,我的方法都返回一个布尔值并显示弹出窗口,或者我应该让我的方法返回一个值(int或boolean)然后根据该返回值显示错误消息,如果需要的话?

如果它有帮助,这是一个例子:

private boolean correctFormat() {

 if (error1) {
  //display pop up for error1
 } else if (error2) {
  //display pop up for error2
 }
 ...
 else {
  return true;
 } //no errors

 return false; //there was an error
}

其他选择:

private int correctFormat() {

 if (error1) {
  return 1;
 } else if (error2) {
  return 2;
 }
 ...
 else {
  return 0;
 } //no error
}

private void checkFormat() {

 int result = correctFormat();

 if (result == 1) {} //display pop up for error1
 else if (result == 2) {} //display pop up for error2
 ...
 else {} //result == 0, no error, do nothing
}

1 个答案:

答案 0 :(得分:0)

您应该使用异常来传达错误条件,而不是返回布尔值:

  1. 如果您忘记使用返回值,编译器和运行时都不会抱怨,并且如果不告诉用户原因,您的程序将无法正常工作。如果您忘记处理异常,运行时将会抱怨,如果它是一个经过检查的异常,您甚至会在编译时遇到错误。
  2. 与布尔值不同,异常可以与发生错误进行通信。
  3. 与布尔值不同,异常可以传达失败的后果(“由......引起”)。
  4. 进一步阅读:https://docs.oracle.com/javase/tutorial/essential/exceptions/index.html

    您不应该向呼叫者和用户通知异常,以免您的呼叫者再次通知用户。由于这个原因,我已经研究过报告相同错误不少于4次的系统。每个例外都应该只报告一次。