我有一个抛出一堆异常的代码,但每个异常都只包含一个 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/