来自异常对象的信息通过java.util.logging

时间:2013-12-21 20:05:44

标签: java logging java.util.logging

我想在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 );
}

1 个答案:

答案 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)