spring boot 註解異常 ControllerAdvice,ExceptionHandler
阿新 • • 發佈:2019-01-09
異常方法放入這個類並加上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(); }