java 中当捕获到异常(Exception) 时,我们可以通过ex.printStackTrace()方法将异常的堆栈信息输出到控制台。但是有时我们需要保存异常的堆栈信息,比如记录在数据库,而java并没有提供相应的API。 自己动手丰衣足食,笔者自己封装了一个工具方法,然后放入自己的工具箱。
笔者将转换方法封装到工具类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;
}
}
笔者直接通过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));
}
从输出结果,我们可以看出,转换的字符串和直接打印在控制台上的完全一致。
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
如对本文有疑问, 点击进行留言回复!!
[JVM学习之路]一、初识JVM,了解其结构、模型及生命周期
【JAVA并发编程】LinkedBlockingQueue原理
网友评论