繁体   English   中英

打印堆栈跟踪元素异常

[英]Printing Stack trace element exception

当捕获到非法参数异常时,dangerousMethodHandler()从StackTraceElement数组打印错误的堆栈跟踪。 对于任何其他类型的异常,危险方法处理程序()将显示“ Exception!”。

我目前已经解决了另一个异常,但似乎无法使用StackTraceElemen数组实现我的代码

public void dangerousMethod() {
    Character.toChars(~0);
}

public void dangerousMethodHandler() {
        try {
        this.dangerousMethod();
        }catch(IllegalArgumentException e){

          StackTraceElement[] trace = e.getStackTrace();
            e.getStackTrace();
            System.err.println(trace[0].toString());

       }    catch (Exception e){
            System.out.print("Exception!");
        }

    }

当我打印出以下内容时

java.lang.Character.toChars(Character.java:4982)

我的输出应该是:

java\.lang\.Character\.toChars\(Character\.java:\d+\)[\s\n]+Main\.dangerousMethod\(Main\.java:\d+\)[\s\n]+Main\.dangerousMethodHandler\(Main\.java:\d+\)[\s\n]+Main\.runTests\(Main\.java:\d+\)[\s\n]+Main\.main\(Main\.java:\d+\)

尝试执行以下操作: Arrays.stream(e.getStackTrace()).skip(0).map(StackTraceElement::toString).reduce((s1, s2) -> s1 + "\\n" + s2).get()

在reduce中,您可以定义如何构造字符串。 也许会对您有帮助。

您只从数组中打印第一个StackTraceElement。 您将要遍历并打印每个。

for (StackTraceElement elem : trace) {
    System.err.println(elem);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM