Java全局异常处理,@ControllerAdvice异常拦截原理解析【简单易懂】
@ControllerAdvice
public class GlobalExceptionHandler {
// 捕获Exception类及其子类的异常
@ExceptionHandler(Exception.class)
@ResponseBody
public Map<String, Object> handleException(Exception e) {
Map<String, Object> result = new HashMap<>();
result.put("code", 500);
result.put("message", "系统异常,请联系管理员");
// 可以记录日志,输出异常信息
e.printStackTrace();
return result;
}
// 捕获NullPointerException异常
@ExceptionHandler(NullPointerException.class)
@ResponseBody
public Map<String, Object> handleNullPointerException() {
Map<String, Object> result = new HashMap<>();
result.put("code", 500);
result.put("message", "空指针异常");
// 可以记录日志
return result;
}
// 捕获自定义异常
@ExceptionHandler(CustomException.class)
@ResponseBody
public Map<String, Object> handleCustomException(CustomException e) {
Map<String, Object> result = new HashMap<>();
result.put("code", e.getErrorCode());
result.put("message", e.getErrorMessage());
// 可以记录日志
return result;
}
}
这个代码示例展示了如何在一个Spring MVC应用中使用@ControllerAdvice
注解来创建全局异常处理器。它定义了针对不同异常类型的处理方法,并且可以根据需要进行日志记录。这种做法可以使得异常处理逻辑集中管理,提高代码的可维护性。
评论已关闭