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
下一篇: LeetCode 280. 摆动排序