Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 让我的函数同时显示错误消息和返回布尔值可以吗?_Java_Exception Handling - Fatal编程技术网

Java 让我的函数同时显示错误消息和返回布尔值可以吗?

Java 让我的函数同时显示错误消息和返回布尔值可以吗?,java,exception-handling,Java,Exception Handling,我正在创建一个函数,如果存在某种错误,它将返回true或false。当前,如果发生错误,将显示一个带有错误的弹出窗口,并且函数返回false。如果没有错误,那么它只返回true 我的问题是: 我的方法返回一个布尔值并显示一个弹出窗口可以吗?或者我应该让我的方法返回一个值(int或boolean),然后根据该返回值显示一条错误消息(如果需要) 下面是一个有帮助的示例: private boolean correctFormat() { if (error1) { //display pop

我正在创建一个函数,如果存在某种错误,它将返回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
}

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

  • 如果忘记使用返回值,编译器和运行时都不会抱怨,如果不告诉用户原因,程序将无法运行。如果您忘记处理异常,运行时会抱怨,如果它是已检查的异常,您甚至会在编译时收到错误
  • 与布尔值不同,异常可以告知发生的错误
  • 与布尔值不同,异常可以传达故障的后果(“由…”引起)
  • 进一步阅读:


    您不应该同时通知调用方和用户异常,以免调用方再次通知用户。我曾在报告相同错误的系统上工作过不少于4次。每个异常都应该报告一次,而且只能报告一次。

    这属于stackexchange站点,名为“review”。这很好。如果不这样做,您将无法检查发生的错误。第二种解决方案是标准错误代码解决方案,也可以。但在某些情况下,可以使用异常进行错误处理。在生成异常的函数中处理异常可能不是正确的设计。如果是这种情况,您必须返回一个包含更多信息的值(例如整数错误代码)。@MateuszDryzek是一个首选项,而不是另一个?@NickMiller,那么第二个选项是更好的选择?