Java如何获取异常堆栈跟踪消息?

在此示例中,我们使用java.io.StringWriterandjava.io.PrintWriter类将堆栈跟踪异常消息转换为字符串。

package org.nhooo.example.io;

import java.io.StringWriter;
import java.io.PrintWriter;

public class StackTraceToString {
    public static void main(String[] args) {
        try {
            int result = 10 / 0;
        } catch (Exception e) {
            // 创建一个StringWriter和一个PrintWriter这两个对象
            // 将用于将堆栈跟踪中的数据转换为字符串。
            StringWriter stringWriter = new StringWriter();
            PrintWriter printWriter = new PrintWriter(stringWriter);

            // 与其在控制台中写入堆栈跟踪,不如将其写入
            // 到PrintWriter,以获取堆栈跟踪消息,然后调用
            // StringWriter的toString()方法。
            e.printStackTrace(printWriter);

            System.out.println("Error = " + stringWriter.toString());
        }
    }
}

此代码段输出以下输出:

Error = java.lang.ArithmeticException: / by zero
    at org.nhooo.example.io.StackTraceToString.main(StackTraceToString.java:9)