java 打印异常内容_java自定义异常打印内容详解
本文實例為大家分享了java自定義異常打印內(nèi)容的具體代碼,供大家參考,具體內(nèi)容如下
背景:在開發(fā)中,我們可能會使用到自定義異常,但是,這個自定義異常在打印日志時,往往打印的內(nèi)容比較多。
1.自定義異常打印內(nèi)容
可以看到,雖然我們使用的是自定義異常,但是當(dāng)拋出時,還是會打印出堆棧的全部信息。
2.查看源碼
通過查看源碼,我們可以得知,當(dāng)拋出異常時,程序會調(diào)用此異常的fillInStackTrace方法,但是,大部分異常都沒有對該方法做處理。基本是調(diào)用super的方法。
可以看到,此方法的父類實現(xiàn),是在Throwable類中。而且此方法加了synchronized鎖,查看堆棧的信息。那么必然會影響性能。
底層實現(xiàn)是native,調(diào)用C語言的方法。
3.解決方法
①.編寫自定義異常
// 此處為lombok注解
@Getter
@AllArgsConstructor
public enum ExceptionEnum {
AUTH(1, "認證異常")
;
private Integer code;
private String msg;
}
public class AppException extends RuntimeException {
public AppException(ExceptionEnum exceptionEnum) {
super(exceptionEnum.getMsg());
}
// 關(guān)鍵
@Override
public Throwable fillInStackTrace() {
return this;
}
public static void main(String[] args) {
throw new AppException(ExceptionEnum.AUTH);
}
}
②.重寫fillInStackTrace方法
重寫該方法后,會只打印第一條信息,這樣不僅可以節(jié)省日志空間,方便查看,更可以提高部分性能。
@Override
public Throwable fillInStackTrace() {
return this;
}
③.打印內(nèi)容
可以看到,打印內(nèi)容明顯變少
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。
時間: 2019-10-26
總結(jié)
以上是生活随笔為你收集整理的java 打印异常内容_java自定义异常打印内容详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Yolov5s模型在全志V853平台上的
- 下一篇: iOS中修改状态栏颜色