使用 StringWriter 和 printWriter 打印异常原因

发布时间 2023-10-09 13:58:17作者: 昨晚的梦

StringWriter和PrintWriter都是Java中用于输出文本的类,它们的主要区别在于输出的目标不同。

StringWriter是一个字符流,它将输出的内容保存在一个字符串缓冲区中,可以通过toString()方法获取缓冲区中的字符串。因此,StringWriter通常用于将输出内容保存到字符串中,而不是直接输出到控制台或其他设备上。

PrintWriter则是一个打印流,它可以将输出的内容直接发送到指定的目标(如控制台、文件等)。PrintWriter提供了一些方便的方法来格式化输出内容,例如println()、printf()等。

import java.io.*;

public class PrintWhyUtils {

	// 创建一个StringWriter对象
	private static StringWriter stringWriter = new StringWriter();

     // 创建一个PrintWriter对象,并将输出目标设置为StringWriter
	private static PrintWriter printWriter = new PrintWriter(stringWriter);
		
	public static String weiterException(Exception e){
		String retStr="";
		try{
			e.printStackTrace(printWriter);
			printWriter.flush();
			stringWriter.flush();
			retStr=stringWriter.getBuffer().toString();
			if(stringWriter!=null){
				stringWriter.close();
			}
			if(printWriter!=null){
				printWriter.close();
			}
		}catch(IOException ex){
			ex.printStackTrace();
		}finally {
			try{
				// 关闭PrintWriter和StringWriter
				printWriter.close();
				stringWriter.close();
			}catch(IOException ex){
				ex.printStackTrace();
			}
		}
		return retStr;
    }
}