繁体   English   中英

在Java中获取堆栈跟踪

[英]Get stack trace in Java

如何在Java中获取异常堆栈跟踪? 我可以使用Thread.currentThread()。getStackTrace()。但是得到错误亚麻布

正确:

java.lang.ArithmeticException: / by zero
at me.edagarli.Main.main(Main.java:32)

错误:

java.lang.ArithmeticException: / by zero
java.lang.Thread.getStackTrace(Thread.java:1589)    
me.edagarli.Main.main(Main.java:54) 
public String getFullErrorDescription(Exception exceptionObj ) {
    String textmsg = "";

    if (exceptionObj != null) {
        StackTraceElement[] ste = exceptionObj.getStackTrace();
        textmsg += "\nIn File : " + ste[index].getClassName() + " ";
        textmsg += "\nIn Method : " + ste[index].getMethodName() + "() ";
        textmsg += "\nAt Line :" + ste[index].getLineNumber() + " ";
    }
    System.err.println(textmsg);
    return textmsg;
}

如果您需要将堆栈跟踪消息放入String实例,您可以使用:

    public String getStackTraceAsString(Exception ex){
    StackTraceElement[] elements = ex.getStackTrace();
    String stacktraceMessage = "";

    for(StackTraceElement element : elements){
        stacktraceMessage += "\nIn File : " + element.getClassName() + " ";
        stacktraceMessage += "\nIn Method : " + element.getMethodName() + " ";
        stacktraceMessage += "\nAt Line :" + element.getLineNumber() + " ";
    }

    return stacktraceMessage;
}

如果只需要打印堆栈跟踪,可以使用printStackTrace方法:

try{
    int a = 100 / 0;
}catch (Exception ex){
    ex.printStackTrace();
}

暂无
暂无

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

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