您现在的位置是:主页 > news > 政府门户网站建设的目标/中国疫情今天最新消息
政府门户网站建设的目标/中国疫情今天最新消息
admin2025/6/6 7:18:36【news】
简介政府门户网站建设的目标,中国疫情今天最新消息,合肥做个网站什么价格,怎么上百度推广产品文章目录为什么需要对异常进行处理?方法一 ExceptionHandler方法二 ControllerAdviceExceptionHandler为什么需要对异常进行处理? 假如SpringMvc我们不对异常进行任何处理, 界面上显示的是这样的,假设进行除计算,除数是0会报错.&…
政府门户网站建设的目标,中国疫情今天最新消息,合肥做个网站什么价格,怎么上百度推广产品文章目录为什么需要对异常进行处理?方法一 ExceptionHandler方法二 ControllerAdviceExceptionHandler为什么需要对异常进行处理?
假如SpringMvc我们不对异常进行任何处理, 界面上显示的是这样的,假设进行除计算,除数是0会报错.&…
文章目录
- 为什么需要对异常进行处理?
- 方法一 @ExceptionHandler
- 方法二 @ControllerAdvice+@ExceptionHandler
为什么需要对异常进行处理?
假如SpringMvc我们不对异常进行任何处理, 界面上显示的是这样的,假设进行除计算,除数是0会报错.:
方法一 @ExceptionHandler
当一个Controller中有方法加了@ExceptionHandler
之后,这个Controller其他方法中没有捕获的异常就会以参数的形式传入加了@ExceptionHandler注解的那个方法中。
@Controller
@RequestMapping("/testController")
public class TestController {@RequestMapping("/demo1")@ResponseBodypublic Object demo1(){//不需要try {} catch {}int i = 1 / 0;return new Date();}//TestController 内的任何异常都会被兜住@ExceptionHandler({RuntimeException.class})public ModelAndView fix(Exception ex){System.out.println("do This");return new ModelAndView("error",new ModelMap("ex",ex.getMessage()));}
}
注意事项:
- 一个Controller下多个@ExceptionHandler上的异常类型不能出现一样的,否则运行时抛异常.
Ambiguous @ExceptionHandler method mapped for;
-
@ExceptionHandler下方法返回值类型支持多种,常见的ModelAndView,@ResponseBody注解标
方法返回值可以为:
ModelAndView对象 Model对象 Map对象 View对象 String对象 还有@ResponseBody、HttpEntity<?>或ResponseEntity<?>,以及void
缺点: 几乎所有的Controller都需要进行异常处理,于是每个Controller都需要去写一个方法,不太方便
方法二 @ControllerAdvice+@ExceptionHandler
@ControllerAdvice注解声明一个注解类,这个注解类中的方法的某些注解会应用到所有的Controller里,其中就包括@ExceptionHandler注解。
/*** Created by liuruijie on 2016/12/28.* 全局异常处理,捕获所有Controller中抛出的异常。*/
@ControllerAdvice
public class GlobalExceptionHandler {//处理自定义的异常@ExceptionHandler(SystemException.class) @ResponseBodypublic Object customHandler(SystemException e){e.printStackTrace();return WebResult.buildResult().status(e.getCode()).msg(e.getMessage());}//其他未处理的异常@ExceptionHandler(Exception.class)@ResponseBodypublic Object exceptionHandler(Exception e){e.printStackTrace();return WebResult.buildResult().status(Config.FAIL).msg("系统错误");}
}