亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java自定義異常打印內容詳解

發布時間:2020-09-07 12:20:28 來源:腳本之家 閱讀:200 作者:LitongZero 欄目:編程語言

本文實例為大家分享了java自定義異常打印內容的具體代碼,供大家參考,具體內容如下

背景:在開發中,我們可能會使用到自定義異常,但是,這個自定義異常在打印日志時,往往打印的內容比較多。

1.自定義異常打印內容

java自定義異常打印內容詳解

可以看到,雖然我們使用的是自定義異常,但是當拋出時,還是會打印出堆棧的全部信息。

2.查看源碼

通過查看源碼,我們可以得知,當拋出異常時,程序會調用此異常的fillInStackTrace方法,但是,大部分異常都沒有對該方法做處理。基本是調用super的方法。

java自定義異常打印內容詳解

可以看到,此方法的父類實現,是在Throwable類中。而且此方法加了synchronized鎖,查看堆棧的信息。那么必然會影響性能。

底層實現是native,調用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());
  }
  
  // 關鍵
  @Override
  public Throwable fillInStackTrace() {
    return this;
  }

  public static void main(String[] args) {
    throw new AppException(ExceptionEnum.AUTH);
  }
}

②.重寫fillInStackTrace方法

重寫該方法后,會只打印第一條信息,這樣不僅可以節省日志空間,方便查看,更可以提高部分性能。

@Override
  public Throwable fillInStackTrace() {
    return this;
  }

③.打印內容

可以看到,打印內容明顯變少

java自定義異常打印內容詳解

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

闵行区| 江门市| 赤峰市| 嘉禾县| 上林县| 准格尔旗| 抚顺县| 育儿| 乐东| 荆门市| 平度市| 鄂托克旗| 雅江县| 梅河口市| 德阳市| 翼城县| 信宜市| 平武县| 东乡族自治县| 吉木萨尔县| 沂南县| 临邑县| 米易县| 宿迁市| 休宁县| 集贤县| 阜南县| 阿瓦提县| 北辰区| 鄂州市| 浠水县| 增城市| 同江市| 泾阳县| 安溪县| 响水县| 宁强县| 樟树市| 阿合奇县| 郁南县| 区。|