java - Exception 的 catch 子句中包含什么

标签 java exception-handling try-catch

我有一个抛出一堆异常的代码,但每个异常都只包含一个 printStackTrace() 方法,如下所示

} catch (SecurityException e) {
    // TODO Auto-generated catch block
    System.err.println(e);
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

这是否足够,或者我是否需要包含额外的语句,如 System.err.println(e)?通常,如果发生异常,我可以仅通过上述方式追根溯源。

最佳答案

如果你能做些什么来解决问题,就在catch中做,如果你无能为力,那么最好使用logging framework。注册异常比使用 e.printStackTrace();System.err.println(e);

个人推荐:http://www.slf4j.org/ , 但如果你有受虐倾向,你可以尝试非常糟糕的(但官方的)Java Logging API:http://download.oracle.com/javase/1.4.2/docs/guide/util/logging/ .

SLF4J 的一个额外优势是它可以将其日志记录重定向到糟糕的 Java Logging API(这样你就可以使用设计优雅的 API,并且仍然符合设计糟糕(法律上不是事实上)的“标准”

SLF4J 易于使用,要记录异常,您只需编写 logger.error("some companying message", exception);,它的另一个优点是您可以,例如配置为send you an email每次您的应用程序崩溃时(通过使用 logback 作为底层日志记录引擎)

关于java - Exception 的 catch 子句中包含什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3765607/

相关文章:

java - Spring 中的 Apache Camel RouteBuilder 不会启动 configure()

java - java中如何注销 session

Perl 包 : how to import classes into the 'use' r's namespace?

c# - 从 Parallel.ForEach 抛出时未处理的 OperationCanceledException

java - 如何在数组中使用 get 方法?

php - 查询中的错误处理…尝试-捕获 block

java - 处理无效字符常量

javascript - 将包含键值格式数据的文本文件转换为 json

java - 使用方法从文本文件获取输出时,未处理的异常类型IOException

java - 如何在具有接口(interface)返回类型的方法中实现错误处理