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

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

 

posted @ 2018-12-17 14:33  生心无住  阅读(573)  评论(0编辑  收藏  举报