如何在java异常处理中记录错误.

Paw*_*mar -4 java exception-handling

哪种方法更适合(根据良好的编程)生产,以便轻松调试错误.

LOG.error("Error message ",e);
Run Code Online (Sandbox Code Playgroud)

要么

LOG.error("Error message "+e);
Run Code Online (Sandbox Code Playgroud)

要么

LOG.error("Error message "+e.getMessage());
Run Code Online (Sandbox Code Playgroud)

Sub*_*mal 5

你为什么不试试呢?您是唯一知道您在日志记录中需要哪些信息的人.根据抛出的异常,您可能需要堆栈跟踪.

请参阅下面的一个小例子来显示不同的输出

private void logTest() {
    try {
        Files.readAllBytes(Paths.get("foobar"));
    } catch (IOException e) {
        logger.error("Error message ", e);
        logger.error("Error message " + e);
        logger.error("Error message " + e.getMessage());
    }
}
Run Code Online (Sandbox Code Playgroud)

logger.error("错误信息",e);

2015-10-07 13:42:11,239 [main] ERROR sub.optimal.Main  - Error message 
java.nio.file.NoSuchFileException: foobar
    at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:79)
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
    at sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:230)
    at java.nio.file.Files.newByteChannel(Files.java:361)
    at java.nio.file.Files.newByteChannel(Files.java:407)
    at java.nio.file.Files.readAllBytes(Files.java:3152)
    at sub.optimal.Main.logTest(Main.java:43)
    at sub.optimal.Main.main(Main.java:53)
Run Code Online (Sandbox Code Playgroud)

logger.error("错误消息"+ e);

2015-10-07 13:42:11,243 [main] ERROR sub.optimal.Main  - Error message java.nio.file.NoSuchFileException: foobar
Run Code Online (Sandbox Code Playgroud)

logger.error("错误消息"+ e.getMessage());

2015-10-07 13:42:11,243 [main] ERROR sub.optimal.Main  - Error message foobar
Run Code Online (Sandbox Code Playgroud)