Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当Java程序失败时,我可以修改打印的堆栈跟踪吗?_Java_Intellij Idea_Stack Trace - Fatal编程技术网

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

当Java程序失败时,我可以修改打印的堆栈跟踪吗?,java,intellij-idea,stack-trace,Java,Intellij Idea,Stack Trace,我正在使用IntelliJ idea,每次我的程序在编程过程中进行测试运行时崩溃,我都厌倦了从stacktrace中看到这么多行,我只想看到几行,告诉我程序在哪里失败,或者可能是一个对话框。在idea或Java中有什么方法可以实现这一点吗?感谢此代码仅打印doStuff()方法中出现的任何错误或异常的堆栈跟踪的前5行 public static void main(String[] args){ try{ doStuff(); } catch(Throwa

我正在使用IntelliJ idea,每次我的程序在编程过程中进行测试运行时崩溃,我都厌倦了从stacktrace中看到这么多行,我只想看到几行,告诉我程序在哪里失败,或者可能是一个对话框。在idea或Java中有什么方法可以实现这一点吗?感谢此代码仅打印
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]);
        }
    }
}
publicstaticvoidmain(字符串[]args){
试一试{
doStuff();
}
捕获(可丢弃的t){
StackTraceElement[]元素=t.getStackTrace();
对于(int i=0;i<5;i++){
系统错误println(元素[i]);
}
}
}

您可以通过扩展应用程序特定行为所需的异常来创建自定义异常。然后,您可以覆盖方法“setStackTrace”,您可以将从现有异常获取的stacktrace转换为将发送到新异常类的参数,您可以从现有stacktrace中提取所需内容,并使用所需内容对其进行修改

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
        }
    }

致以最诚挚的问候。

我想你应该看看IntelliJ's,它只会折叠stacktrace中“嘈杂”的部分。如果需要,您仍然可以查看整个stacktrace(例如,当您试图查看谁调用了您的方法时)。

捕获异常并自行处理。这不是一个特定的异常,我指的是我在编写程序和执行测试运行时遇到的失败,如果不清楚,很抱歉。相同的基本区别。只需捕获
main()
中的所有异常(即
catch(Exception e){…}
),我只想看到几行代码,告诉我程序在哪里失败了
,JVM到底应该如何知道向您显示哪些行?如果使用日志框架并记录异常,您可以决定显示多少帧,很好,谢谢!只是一个小小的更正,我相信getStackTraceElements()应该是getStackTrace()。@JavaMonkey22你是对的,我没有测试代码。现在更正。这也是一个很好的答案,谢谢。我就是不能按我想要的方式得到它。