这两种输出方式一直在用,趁着无聊把这个发出来,顺便自己记录一下,大家视不同情况使用。
通常e.getMessage()
并不能获取全部的错误信息,需要用到e.printStackTrace()
查看完整错误信息,但是这个方法是void 只能在控制台输出。
注意:e.printStackTrace()要尽量少用或不用,可能会导致锁死
有两种方式推荐
1.logger方式
一个直接通过logger打印出来,这个方法是最简便的
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);
logger.error("系统异常:",e);
2.通过工具类转换成字符串
直接上代码:
import java.io.PrintWriter;
import java.io.StringWriter;
/**
* 描述:异常工具类
* 创建人:慌途L
*/
public class ExceptionUtil {
private ExceptionUtil(){}
/**
* 获取异常信息
*/
public static String getStackTraceInfo(Exception e) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
try {
e.printStackTrace(pw);
pw.flush();
sw.flush();
return sw.toString();
} catch (Exception ex) {
return "异常信息转换错误";
} finally {
try {
pw.close();
} catch (Exception ex) {
ex.printStackTrace();
}
try {
sw.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
欢迎关注公众号:慌途L
后面会慢慢将文章迁移至公众号,也是方便在没有电脑的情况下可以进行翻阅,更新的话会两边同时更新,大家不用担心!