5. 全局异常捕捉【从零开始学Spring Boot】
在一个项目中的异常我们我们都会统一进行处理的,那么如何进行统一进行处理呢?
新建一个类GlobalDefaultExceptionHandler,
在class注解上@ControllerAdvice,
在方法上注解上@ExceptionHandler(value = Exception.class),具体代码如下:
com.kfit.base.exception.GlobalDefaultExceptionHandler:
- package com.kfit.base.exception;
-
-
-
- import javax.servlet.http.HttpServletRequest;
-
-
-
- import org.springframework.web.bind.annotation.ControllerAdvice;
-
- import org.springframework.web.bind.annotation.ExceptionHandler;
-
-
-
- @ControllerAdvice
-
- public class GlobalDefaultExceptionHandler {
-
-
-
- @ExceptionHandler(value = Exception.class)
-
- public void defaultErrorHandler(HttpServletRequest req, Exception e) {
-
- // // If the exception is annotated with @ResponseStatus rethrow it and let
-
- // // the framework handle it - like the OrderNotFoundException example
-
- // // at the start of this post.
-
- // // AnnotationUtils is a Spring Framework utility class.
-
- // if (AnnotationUtils.findAnnotation(e.getClass(), ResponseStatus.class) != null)
-
- // throw e;
-
- //
-
- // // Otherwise setup and send the user to a default error-view.
-
- // ModelAndView mav = new ModelAndView();
-
- // mav.addObject("exception", e);
-
- // mav.addObject("url", req.getRequestURL());
-
- // mav.setViewName(DEFAULT_ERROR_VIEW);
-
- // return mav;
-
-
-
- //打印异常信息:
-
- e.printStackTrace();
-
- System.out.println("GlobalDefaultExceptionHandler.defaultErrorHandler()");
-
-
-
- /*
- * 返回json数据或者String数据:
- * 那么需要在方法上加上注解:@ResponseBody
- * 添加return即可。
- */
-
-
-
- /*
- * 返回视图:
- * 定义一个ModelAndView即可,
- * 然后return;
- * 定义视图文件(比如:error.html,error.ftl,error.jsp);
- *
- */
-
- }
-
-
-
- }
com.kfit.test.web.DemoController 加入方法:
- @RequestMapping("/zeroException")
-
- public int zeroException(){
-
- return 100/0;
-
- }
访问:http://127.0.0.1:8080/zeroException 这个方法肯定是抛出异常的,那么在控制台就可以看到我们全局捕捉的异常信息了.
购买完整视频,请前往:http://www.mark-to-win.com/TeacherV2.html?id=287