通过java.util.logging从异常对象获取信息
我想在java应用程序开发期间进行日志记录。我希望在异常处理期间从异常对象获取信息。首选从对象查询哪些信息?使用.getMessage()方法还是.toString()方法 My.getMessage()代码段:通过java.util.logging从异常对象获取信息,java,logging,java.util.logging,Java,Logging,Java.util.logging,我想在java应用程序开发期间进行日志记录。我希望在异常处理期间从异常对象获取信息。首选从对象查询哪些信息?使用.getMessage()方法还是.toString()方法 My.getMessage()代码段: try { //my code } catch( Exception ex ) { log.log( Level.SEVERE, ex.getMessage(), ex ); } try { //my code } catch( Exception ex )
try {
//my code
} catch( Exception ex ) {
log.log( Level.SEVERE, ex.getMessage(), ex );
}
try {
//my code
} catch( Exception ex ) {
log.log( Level.SEVERE, ex.toString(), ex );
}
My.toString()代码段:
try {
//my code
} catch( Exception ex ) {
log.log( Level.SEVERE, ex.getMessage(), ex );
}
try {
//my code
} catch( Exception ex ) {
log.log( Level.SEVERE, ex.toString(), ex );
}
默认情况下,异常
toString()
方法将把异常类的名称和异常消息放在一起。因此,getMessage
的唯一区别在于toString()
也将为您提供异常类
现在,无论哪种方式,java.util.logging
都将打印类的名称、消息和堆栈跟踪,因为您将异常作为调用log
的第三个参数传递。因此,提供getMessage()
或toString()
的结果是无用的。相反,您应该放置一条消息,指示异常发生的上下文以及其他相关信息
例如,考虑以下内容:
String identifier = "duck";
try {
int result = Integer.parseInt(identifier);
}
catch(Exception e) {
log.log(Level.SEVERE, "Failed to parse the identifier.", e);
}
由于“duck”不是整数,这将导致异常。然后程序将打印:
SEVERE: Failed to parse the identifier.
java.lang.NumberFormatException: For input string: "duck"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at test.DDD.main(DDD.java:13)
那么,当你试过的时候,哪一个对你更有用呢?