当前位置: 移动技术网 > IT编程>开发语言>Java > ExceptionUtil: 转换Exception 的printStackTrace 输出为字符串

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

2020年07月17日  | 移动技术网IT编程  | 我要评论

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网