1. 程式人生 > >spring boot 註解異常 ControllerAdvice,ExceptionHandler

spring boot 註解異常 ControllerAdvice,ExceptionHandler


異常方法放入這個類並加上ControllerAdvice註解
@ControllerAdvice
public class MyControllerAdvice {


Controller出現異常,會根據對應的異常找到定義的異常,沒有則統一進入異常的父類Exception
出現異常進入此方法操作邏輯,可以返回String,也可以返回modelandview試圖
@ResponseBody
@ExceptionHandler(value = java.lang.Exception.class)    指定異常型別
public String myException(Exception ex) {

    Map<String, Object> map = new HashMap<>();
    map.put("code", 500);
    map.put("msg", "出錯了。 ");
    return map.toString();
}

算數異常,如果是算術異常就不會進入父類Exception的異常了

@ResponseBody
@ExceptionHandler(value = java.lang.ArithmeticException.class)
public String myException2(Exception ex) {
    Map<String, Object> map = new HashMap<>();
    map.put("code", 420);
    map.put("msg", "算數異常");
    return map.toString();
}

自定義異常:

public class MyException extends RuntimeException {    建立自定義異常MyException 

    public MyException(){

    }
    public MyException(String s){             將String傳入父類的message中
        super(s);
    }

}

丟擲異常:

       throw new MyException("自定義異常");    建立自定義異常類,傳入內容引數

設定自定義異常:

    當自己使用 throw new MyException("自定義異常"); 丟擲異常進入此方法

@ResponseBody
@ExceptionHandler(value = com.cqvie.Spring_BootHelloWorld.ControllerAdvice.MyException.class)
public String myException4(Exception ex) {
    Map<String, Object> map = new HashMap<>();
    map.put("code", -248);
    map.put("msg", ex.getMessage());   這個ex可以直接獲取建立異常類的傳入的引數。
    return map.toString();
}