您现在的位置是:主页 > news > 政府门户网站建设的目标/中国疫情今天最新消息

政府门户网站建设的目标/中国疫情今天最新消息

admin2025/6/6 7:18:36news

简介政府门户网站建设的目标,中国疫情今天最新消息,合肥做个网站什么价格,怎么上百度推广产品文章目录为什么需要对异常进行处理?方法一 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("系统错误");}
}