一:知识点:
1.@RestControllerAdvice
- 通过@ControllerAdvice注解可以将对于控制器的全局配置放在同一个位置。
- 注解了@RestControllerAdvice的类的方法可以使用@ExceptionHandler、@InitBinder、@ModelAttribute注解到方法上。
- @RestControllerAdvice注解将作用在所有注解了@RequestMapping的控制器的方法上。
- @ExceptionHandler:用于指定异常处理方法。当与@RestControllerAdvice配合使用时,用于全局处理控制器里的异常。
- @InitBinder:用来设置WebDataBinder,用于自动绑定前台请求参数到Model中。
- @ModelAttribute:本来作用是绑定键值对到Model中,当与@ControllerAdvice配合使用时,可以让全局的@RequestMapping都能获得在此处设置的键值对
二,异常代码展示
package com.example.demo_webmvc.zeng.exception;
import com.example.demo_webmvc.zeng.util.R;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
/**
* 自定义异常消息
*/
@RestControllerAdvice
public class ZengException {
/**
* 全局异常
* @param e
* @return
*/
@ExceptionHandler(value = Exception.class)
public R runimeError(Exception e){
System.out.println("运行异常---"+e.getMessage());
System.out.println("全局异常--执行");
return R.error("全局异常--执行");
}
/**
* 特定异常
* @param e
* @return
*/
@ExceptionHandler(value = RuntimeException.class)
public R runime2Error(RuntimeException e){
System.out.println("运行异常---"+e.getMessage());
System.out.println("特定异常--执行");
return R.error("特定异常--执行");
}
/**
* 自定义异常
* @param e
* @return
*/
@ExceptionHandler(value = CustomException.class)
public R runime1Error(CustomException e){
System.out.println("运行异常---"+e.getMessage());
System.out.println("自定义异常--执行");
return R.error("自定义异常--执行");
}
}
package com.example.demo_webmvc.zeng.exception;
/**
* 异常方法
*/
public class CustomException extends Exception {
/**
* 自定义异常
* @param message
*/
public CustomException(Exception message) {
super(message);
}
}