e.printStackTrace()在日志中输出 log.error("系统异常:",e);
通常e.getMessage()并不能获取全部的错误信息,需要用到e.printStackTrace()查看完整错误信息,但是这个方法是void 只能在控制台输出。
介绍两种方法,其实logger已经帮我做了这个事情
一、
log.error("系统异常:",e);
一个直接通过log打印出来,这个方法是最简便的
二、
- /**
- * 获取e.printStackTrace() 的具体信息,赋值给String 变量,并返回
- *
- * @param e
- * Exception
- * @return e.printStackTrace() 中 的信息
- */
- public static String getStackTraceInfo(Exception e) {
- StringWriter sw = null;
- PrintWriter pw = null;
- try {
- sw = new StringWriter();
- pw = new PrintWriter(sw);
- e.printStackTrace(pw);//将出错的栈信息输出到printWriter中
- pw.flush();
- sw.flush();
- return sw.toString();
- } catch (Exception ex) {
- return "printStackTrace()转换错误";
- } finally {
- if (sw != null) {
- try {
- sw.close();
- } catch (IOException e1) {
- e1.printStackTrace();
- }
- }
- if (pw != null) {
- pw.close();
- }
- }
-
- }
另一个通过工具类转换成字符串,转成字符串了想咋输出就咋输出
另外e.printStackTrace()要尽量少用,可能会导致锁死
详见
java中e.printStackTrace()不要使用,请使用logger记录
工具类引用