我想在java应用程序开发期间进行日志记录。我希望在异常处理期间来自异常对象的信息。从对象查询哪些信息是首选?使用.getMessage()方法或.toString()方法?
我的.getMessage()代码段:
try {
//my code
} catch( Exception ex ) {
log.log( Level.SEVERE, ex.getMessage(), ex );
}
我的.toString()代码段:
try {
//my code
} catch( Exception ex ) {
log.log( Level.SEVERE, ex.toString(), ex );
}
答案 0 :(得分:1)
默认情况下,异常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)