当Java程序失败时,我可以修改打印的堆栈跟踪吗?

时间:2013-03-14 12:15:00

标签: java intellij-idea stack-trace

我正在使用IntelliJ的想法,每当我在编程过程中进行测试运行时我的程序崩溃我厌倦了看到堆栈跟踪中的这么多行,我只是想看到几行告诉我程序失败的地方或对话框。有什么方法可以在想法或Java中实现这一点吗?感谢

3 个答案:

答案 0 :(得分:2)

此代码仅打印doStuff()方法中出现的任何错误或异常的堆栈跟踪的前5行。

public static void main(String[] args){
    try{
        doStuff();
    }
    catch(Throwable t){
        StackTraceElement[] elements = t.getStackTrace();
        for(int i = 0; i < 5; i++){
            System.err.println(elements[i]);
        }
    }
}

答案 1 :(得分:1)

您可以通过为应用程序的特定行为扩展所需的Exception来创建自定义异常。然后你可以覆盖方法“setStackTrace”,你可以将你从现有异常中获得的堆栈跟踪转换为一个将发送到你的新Exception类的参数,你可以从现有的堆栈跟踪中提取你想要的东西并用它来修改它。你想要的内容。

class CustomException extends Exception {
        @Override
        public void setStackTrace(StackTraceElement[] stackTrace) {
            // Get elements I want from my stack trace
                    // Then I add what I want from the existing stacktrace and add some custom content
        }
    }

最好的问候。

答案 2 :(得分:1)

我认为你应该看看IntelliJ的console folding customization,它只会折叠你的堆栈跟踪中的'嘈杂'部分。如果需要,您仍然可以看到整个堆栈跟踪(例如,当您尝试查看谁调用您的方法时)。