如何查看JAVA中完整的异常日志?

16

当我使用命令java ExceptionTest运行某些Java程序时,有时会省略异常,并且呈现为:

Exception in thread "main" java.lang.NoClassDefFoundError: aa/bb/DD
        at SOMEWHERE(unknown source)
Caused by: java.lang.ClassNotFoundException: aaa.bbb.CC
        at SOMEWHER(unknown source)
        ... 13 more

我想在这种情况下看到另外13个异常。有没有选项可以查看所有的异常日志?

2个回答

33

你已经看到它们了,那只是Java(以及默认情况下的Logback)默认打印异常的可笑方式。这是堆栈跟踪:

Exception in thread "main" java.lang.NoClassDefFoundError: aa/bb/DD
        at SOMEWHERE(unknown source)
Caused by: java.lang.ClassNotFoundException: aaa.bbb.CC
        at SOMEWHER(unknown source)
        ... 13 more

实际上意味着以下程序流程(从底部到顶部):

Caused by: java.lang.ClassNotFoundException: aaa.bbb.CC
        at SOMEWHER(unknown source)
Exception in thread "main" java.lang.NoClassDefFoundError: aa/bb/DD
        at SOMEWHERE(unknown source)

...13 more (在Logback中是N common frames omitted)只是表示这些异常已经被打印过了。在Logback中,您可以重新构造堆栈跟踪以避免重复,并始终以正确的顺序打印堆栈行,请参见我的博客


7

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接