SpringBoot异常处理(Whitelabel Error Page和自定义全局异常处理页面)和整合ajax异常处理
@ControllerAdvice
public class GlobalExceptionHandler {
// 处理所有不可知的异常
@ExceptionHandler(Exception.class)
public ModelAndView handleUnknownException(Exception e) {
ModelAndView mv = new ModelAndView();
mv.addObject("error", e.getMessage());
mv.setViewName("error_page"); // 自定义错误页面
return mv;
}
// 处理所有的NullPointerException异常
@ExceptionHandler(NullPointerException.class)
public ModelAndView handleNullPointerException(NullPointerException e) {
ModelAndView mv = new ModelAndView();
mv.addObject("error", e.getMessage());
mv.setViewName("error_page"); // 自定义错误页面
return mv;
}
// 处理Ajax请求的异常
@ResponseBody
@ExceptionHandler(value = Exception.class)
public Map<String, Object> handleAjaxException(Exception e) {
Map<String, Object> result = new HashMap<>();
result.put("error", e.getMessage());
result.put("status", "error");
return result;
}
}
这段代码使用@ControllerAdvice
注解定义了一个全局异常处理器。它包含了处理未知异常和空指针异常的方法,并且添加了一个方法来处理Ajax请求的异常,返回JSON格式的错误信息。这样,无论是普通的页面请求还是Ajax请求,都可以用相同的方式来处理异常,提高了代码的模块化和可维护性。
评论已关闭