酷代码 AI
菜单
服务商
DeepSeek字节豆包讯飞星火
更多选项

Spring Boot全局异常处理:实现HandlerExceptionResolver与使用@ControllerAdvice注解全解析

在Spring Boot中,全局异常处理可以通过实现HandlerExceptionResolver接口或者使用@ControllerAdvice注解来实现。 1. 实现HandlerExceptionResolver接口: ```java @Component public class GlobalExceptionHandler implements HandlerExceptionResolver { @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { // 这里可以捕获到所有控制器抛出的异常 ex.printStackTrace(); ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("exception", ex.getMessage()); modelAndView.setViewName("error"); // 设置跳转到error页面 return modelAndView; } } ``` 2. 使用@ControllerAdvice注解: ```java @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(value = Exception.class) public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception { ModelAndView mav = new ModelAndView(); mav.addObject("exception", e); mav.addObject("url", req.getRequestURL()); mav.setViewName("error"); return mav; } // 可以添加多个方法来处理不同类型的异常 @ExceptionHandler(value = IOException.class) public ModelAndView ioErrorHandler(HttpServletRequest req, IOException e) throws Exception { ModelAndView mav = new ModelAndView(); mav.addObject("exception", e); mav.addObject("url", req.getRequestURL()); mav.setViewName("ioError"); return mav; } } ``` 在上述代码中,我们定义了一个全局异常处理器,并指定了当发生异常时,跳转到哪个页面。这样,无论在哪个Controller中抛出异常,都会被这个全局异常处理器捕获并进行处理。 ######[AI写代码神器 | 334点数解答 | 2023-12-07 15:01:56]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]