全局異常處理

全局異常處理:
1. Throwable是所有錯誤或異常的超類。Throwable類有兩個直接子類:Error類和Exception類。
2. Error類和Exception類
1、Error是指java運行時系統的內部錯誤和資源耗盡錯誤,是程序無法處理的異常,應用程序不會拋出該類對象。
2、Exception是程序本身可以處理的異常,應儘可能去處理這些異常。Exception分兩類,一個是運行時異常RuntimeException,一個是檢查異常CheckedException。
3、CheckedException一般是外部錯誤,這種異常都發生在編譯階段,Java編譯器會強制程序去捕獲此類異常。
4、RuntimeException是那些可能在Java 虛擬機正常運行期間拋出的異常的超類。這種錯誤是由程序員引起的錯誤,可以修正代碼解決。
3. 用@ControllerAdvice+@ExceptionHandler實現全局異常處理
通常在Controller層需要去捕獲service層的異常,防止返回一些不友好的錯誤信息到客戶端,但如果Controller層每個方法都用模塊化的try-catch代碼去捕獲異常,會很難看也難維護。
異常處理最好是解耦的,並且都放在一個地方集中管理。Spring能夠較好的處理這種問題,核心如下,這裏主要關注前兩個:
@ExceptionHandler:統一處理某一類異常,從而能夠減少代碼重複率和複雜度
@ControllerAdvice:異常集中處理,更好的使業務邏輯與異常處理剝離開
@ResponseStatus:可以將某種異常映射爲HTTP狀態碼

	單使用@ExceptionHandler,只能在當前Controller中處理異常,與@ControllerAdvice組合使用,則可以實現全局異常處理,不用每個controller都配置。
  1. 代碼
  @ControllerAdvice
  public class MyControllerAdvice {
  	@ResponseBody
  	@ExceptionHandler(value = Exception.class)
  	public String errorHandler(Exception ex) {
  		JSONObject jsonObject = new JSONObject();
  		jsonObject.put("code", -2);
  		jsonObject.put("msg", ex.getMessage());
  		return AESUtil.encryptCbcMode(jsonObject.toString());
  }
  1. 自定義404頁面,建立\static\error\404.html即可覆蓋SpringBoot默認頁面
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章