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 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 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 map = new HashMap<>();
    map.put("code", -248);
    map.put("msg", ex.getMessage());   这个ex可以直接获取创建异常类的传入的参数。
    return map.toString();
}

你可能感兴趣的:(springboot,Spring,Cloude)