SpringBoot全局异常处理
Springboot中使用自定义异常,进行全局异常处理
自定义一个异常类
public class UserNotExistException extends RuntimeException{
public UserNotExistException() {
super("用户不存在!");
}
}
编写一个异常处理器
@ControllerAdvice
public class MyExceptionHandler {
返回json数据
@ResponseBody
@ExceptionHandler(UserNotExistException.class)
public Map<String, Object> handlerException(Exception e){
Map<String, Object> map = new HashMap<>();
map.put("code","user.NotExist");
map.put("message",e.getMessage());
return map;
}
}
异常处理器需要加上@ControllerAdvice注解,@ControllerAdvice注解可以将类标识为一个异常处理器类,在要处理的异常方法上标上@ExceptionHandler,括号里边为自定义的异常类
在处理异常的方法中,写要返回的json数据,一般为Map集合,也可以编写一个返回异常信息的类来返回异常信息。
使用Controller来测试
@Controller
public class HelloController {
@RequestMapping("/hello")
@ResponseBody
public String hello(@RequestParam("user") String user){
if (user.equals("aaa")){
throw new UserNotExistException();
}
return "Hello world";
}
}