Java中遇到错误时该怎么办

5
在Java中,我经常看到以下代码。我想知道的是,只显示错误信息是否足够?
我对Java还很陌生。我想学习的是如何高效处理错误,并了解最佳实践的错误处理方法。通常,在catch块中应该做什么?
示例1:printStackTrace()
} catch (SomeException e) {
    e.printStackTrace();
}

Example 2 : getMessage

} catch (SomeException e) {
    e.getMessage();
}

示例3:显示自定义错误消息

} catch (IOException E) {
    System.out.println("Error occured. Please try again.");
}

使用Logger是首选。就像Amila回答的那样... - Danielson
6个回答

5

简而言之,答案是“取决于”。根据业务逻辑做相应的操作。

  • 如果你想记录日志,就记录下来。
  • 如果你想在控制台上看到错误,就将其输出到那里。
  • 如果你想将错误传回给方法调用者,就这么做。

具体情况取决于各种可能性和需求。


2

我建议你先从Java教程中的异常部分开始学习。

在catch块中应该根据你的应用程序进行处理。

通常,如果你只是记录错误,应该包含堆栈跟踪以便更容易地进行调试。

logger.error("Error occurred.", e);

0

你应该使用Logger记录错误,这样你就可以决定在哪里写入异常(例如文件),并根据代码的情况做其他事情。

例如,如果你正在写入数据库,你应该回滚数据到先前的状态。

我还建议你不要抑制异常,而是让“用户”知道出了问题。你可以捕获异常并将其包装成另一个带有更加用户友好的消息的异常。


0

在try catch块中捕获任何异常时,您还可以重定向到另一个页面,例如错误页面。 您还可以在HTML页面上描述错误。 因此,如果catch块中有异常,则用户将被重定向到错误页面。


0

e.printStackTrace将消息打印到控制台,当用户查看控制台时,您可以使用该方法...

e.getMessage()返回一个字符串,因此您可以根据需要进行处理,例如:

try {

} catch (IOException E) {
    System.out.println("Error occured. Please try again."+ e.getMessage());
}

如果您没有控制台,但是有一个GUI界面,可以使用getMessage()方法,例如:

textField.setText(e.getMessage());

-1
e.printStackTrace();

上述做法可能是一个好的实践,因为它可以追踪堆栈并显示问题出现的位置和原因。


如果没有控制台会怎么样? - SSH
是的,您可以根据情况使用它们中的任何一个。 - Asif

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接