存储异常堆栈信息为字符串

时间:2022-02-03 15:15:19
package com.jason.test;


import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;

public class Foo {
public static void main(String[] args) throws UnsupportedEncodingException, FileNotFoundException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintWriter pw = new PrintWriter(baos);

try {
String[] arr = new String[]{"a", "b"};
System.out.println(arr[3]);
} catch (Exception e) {
e.printStackTrace(pw);
}
pw.flush();
System.out.println(baos.toString("utf-8"));
}
}

Exception 的 printStackTrace有一个重载的方法可以传入PrintWriter,如果在PrintWriter 中放入ByteArrayOutputStream,就可以把内容缓存在ByteArrayOutputStream,

当调用ByteArrayOutputStream 的toString 方法时就可以得到它缓存的内容

以下是ByteArrayOutputStream 的toString 方法

    public synchronized String toString(String charsetName)
        throws UnsupportedEncodingException
    {
        return new String(buf, 0, count, charsetName);
    }