欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ExceptionUtil: 转换Exception 的printStackTrace 输出为字符串

程序员文章站 2022-04-16 15:45:31
java 中当捕获到异常(Exception) 时,我们可以通过ex.printStackTrace()方法将异常的堆栈信息输出到控制台。但是有时我们需要保存异常的堆栈信息,比如记录在数据库,而java并没有提供相应的API。 自己动手丰衣足食,笔者自己封装了一个工具方法,然后放入自己的工具箱。1. ExceptionUtil笔者将转换方法封装到工具类ExceptionUtil 之中public final class ExceptionUtil { /** 解析异常堆栈信息 ....

java 中当捕获到异常(Exception) 时,我们可以通过ex.printStackTrace()方法将异常的堆栈信息输出到控制台。但是有时我们需要保存异常的堆栈信息,比如记录在数据库,而java并没有提供相应的API。 自己动手丰衣足食,笔者自己封装了一个工具方法,然后放入自己的工具箱。

1. ExceptionUtil

笔者将转换方法封装到工具类ExceptionUtil 之中

public final class ExceptionUtil {

    /** 解析异常堆栈信息
     * @param ex
     * @return String
     * @author zongf
     * @date 2020-07-15
     */
    public static String parseStackTrace(Exception ex) {
        StringWriter sw = null;
        PrintWriter pw = null;

        try {
            sw = new StringWriter();
            pw = new PrintWriter(sw);
            ex.printStackTrace(pw);
            return sw.toString();
        } catch (Exception e) {
            // do Nothing
        } finally {
            CloseUtil.close(sw, pw);
        }
        return null;
    }
}

2. 测试

2.1 测试用例

笔者直接通过new方法来创建异常,创建两个常见的异常,然后对比一下输出结果。

public static void main(String[] args) {

    NullPointerException nullEx = new NullPointerException("字段不能为空");
    ArrayIndexOutOfBoundsException outOfBoundsEx = new ArrayIndexOutOfBoundsException("数组下表越界");

    nullEx.printStackTrace();
    System.out.println(ExceptionUtil.parseStackTrace(nullEx));

    System.out.println("----------------------------------------------");
    outOfBoundsEx.printStackTrace();
    System.out.println(ExceptionUtil.parseStackTrace(outOfBoundsEx));

}

2.2 测试输出

从输出结果,我们可以看出,转换的字符串和直接打印在控制台上的完全一致。

java.lang.NullPointerException: 字段不能为空
	at org.zongf.tools.common.utils.ExceptionUtil.main(ExceptionUtil.java:40)
java.lang.NullPointerException: 字段不能为空
	at org.zongf.tools.common.utils.ExceptionUtil.main(ExceptionUtil.java:40)

----------------------------------------------
java.lang.ArrayIndexOutOfBoundsException: 数组下表越界
	at org.zongf.tools.common.utils.ExceptionUtil.main(ExceptionUtil.java:41)

java.lang.ArrayIndexOutOfBoundsException: 数组下表越界
	at org.zongf.tools.common.utils.ExceptionUtil.main(ExceptionUtil.java:41)

本文地址:https://blog.csdn.net/zongf0504/article/details/107386886

相关标签: util java