try {
xxx;
} catch (Exception e) {
e.printStackTrace();
log.error("xxx失败!");
}
当try语句中出现异常是时,会执行catch中的语句,java运行时系统会自动将catch括号中的Exception e 初始化,也就是实例化Exception类型的对象。e是此对象引用名称。e.printStackTrace() 在打印异常到控制台时,会将产生错误堆栈字符串存入到字符串池内存空间,如果此时的空间比较小,并且异常多,此内存空间可能一下子就被占满了,最终会抛出 OOM,导致整个应用挂掉。
正确的是:
try {
xxx;
} catch (Exception e) {
log.error("xxx失败!", e);
}