sunny123456

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

e.printStackTrace()在日志中输出 log.error("系统异常:",e);

通常e.getMessage()并不能获取全部的错误信息,需要用到e.printStackTrace()查看完整错误信息,但是这个方法是void 只能在控制台输出。

介绍两种方法,其实logger已经帮我做了这个事情

一、

log.error("系统异常:",e);

一个直接通过log打印出来,这个方法是最简便的

二、

  1. /**
  2. * 获取e.printStackTrace() 的具体信息,赋值给String 变量,并返回
  3. *
  4. * @param e
  5. * Exception
  6. * @return e.printStackTrace() 中 的信息
  7. */
  8. public static String getStackTraceInfo(Exception e) {
  9. StringWriter sw = null;
  10. PrintWriter pw = null;
  11. try {
  12. sw = new StringWriter();
  13. pw = new PrintWriter(sw);
  14. e.printStackTrace(pw);//将出错的栈信息输出到printWriter中
  15. pw.flush();
  16. sw.flush();
  17. return sw.toString();
  18. } catch (Exception ex) {
  19. return "printStackTrace()转换错误";
  20. } finally {
  21. if (sw != null) {
  22. try {
  23. sw.close();
  24. } catch (IOException e1) {
  25. e1.printStackTrace();
  26. }
  27. }
  28. if (pw != null) {
  29. pw.close();
  30. }
  31. }
  32. }

另一个通过工具类转换成字符串,转成字符串了想咋输出就咋输出

另外e.printStackTrace()要尽量少用,可能会导致锁死

详见

java中e.printStackTrace()不要使用,请使用logger记录

工具类引用

java 获取e.printStackTrace() 的具体信息,赋值给String 变量 并返回

https://blog.csdn.net/qq_35542689/article/details/88836691
posted on 2022-10-19 21:37  sunny123456  阅读(1183)  评论(0编辑  收藏  举报