异常打印e.toString()、e.getMessage()、e.printStackTrace()区别
-
e.toString()获取的信息包括异常类型和异常详细消息,同时写入error.log
-
e.getMessage()只是获取了异常的详细消息字符串,同时写入error.log
-
e.printStackTrace();可以打印出异常信息在代码中的信息以及位置到控制台,能够非常清晰的定位问题,但是不能写入error.log文件,可以手动写代码将其写入error.log文件
-
直接打印 e和e.printStackTrace() 是一样的日志打印效果,但是能写入error.log文件
先看一个项目中简单的空指针异常:
代码中断点处 可以看到:assetPledgeDO获取是null
四种异常打印的日志:
e.printStackTrace();或者直接打印e的日志:
java.lang.NullPointerException
at com.byx.factoring.business.assetPackage.controller.AssetCreditController.add(AssetCreditController.java:276)
at com.byx.factoring.business.assetPackage.controller.AssetCreditController$$FastClassBySpringCGLIB$$62446952.invoke(<generated>)
.......
结束
getMessage()源码:
public String getMessage() {
return detailMessage;
}
toString()源码
public String toString() {
String s = getClass().getName();
String message = getLocalizedMessage();
return (message != null) ? (s + ": " + message) : s;
}
public String getLocalizedMessage() {
return getMessage();
}
public String getMessage() {
return detailMessage;
}