博客
关于我
SpringMVC处理异常
阅读量:556 次
发布时间:2019-03-09

本文共 1254 字,大约阅读时间需要 4 分钟。

Spring 提供了多种方式将异常转换为响应,这些机制可以帮助开发者更好地管理应用程序的错误处理流程。以下是一些关键信息:

  • 特定的Spring异常将会自动映射为指定的HTTP状态码:Spring内部有很多特定的异常类,这些异常会被自动映射到相应的HTTP状态码中。例如,当DispatcherServlet无法找到处理请求的方法时,会抛出NoSuchRequestHandlingMethodException异常,最终生成404状态码(Not Found)。

  • 使用@ResponseStatus注解将异常映射为特定状态码:通过在异常类上使用@ResponseStatus注解,可以指定要映射到的具体HTTP状态码。例如,SpittleNotFound-Exception异常可以被映射到404状态码。

  • 在控制器方法上使用@ExceptionHandler注解处理异常:@ExceptionHandler注解可以用来在控制器方法中定义处理特定异常的逻辑。这样的方法可以接收任何异常类型,并根据需要返回处理结果。

  • 使用@controllerAdvice来集中管理异常处理:通过定义一个带有@controllerAdvice注解的类,可以集中管理应用程序中所有控制器方法抛出的异常。这种方式有助于减少重复代码,并统一处理异常。

  • 以下是如何在Spring应用中配置这些机制的具体步骤:

    • 创建一个新的异常处理类,例如''
      @ControllerAdvicepublic class ZzfExceptionHandler {    public static final String IMOOC_ERROR_VIEW = "error";    @ExceptionHandler(value = Exception.class)    public ModelAndView errorHandler(HttpServletRequest request, HttpServletResponse response, Exception e) throws Exception {        e.printStackTrace();        ModelAndView mav = new ModelAndView();        mav.addObject("exception", e);        mav.addObject("url", request.getRequestURL());        mav.setViewName(IMOOC_ERROR_VIEW);        return mav;    }}

      这个类会处理所有控制器抛出的异常,将其转换为视图响应,并跳转到templates/error.html。

    这样,不管应用程序中哪个控制器方法抛出异常,都可以通过这个统一的异常处理逻辑来处理。这个方法确保了错误信息的一致性和可追踪性,同时也使代码更加简洁和易于维护。

    转载地址:http://ommsz.baihongyu.com/

    你可能感兴趣的文章
    Python内置函数详解
    查看>>
    Python/Kivy:从一个类调用函数到另一个类并在 Python 中显示小部件
    查看>>
    Python/Kivy:我可以在双击标签时调用函数吗
    查看>>
    python内置函数5-frozenset()
    查看>>
    Python/Plotly:如何使用要显示的信息自定义悬停模板?
    查看>>
    Python/Selenium - 无法单击 www.instagram.com 上的“接受 cookie“按钮
    查看>>
    Python内置函数(35)——next
    查看>>
    python写入mysql
    查看>>
    python写入csv老是乱码或者各种不好
    查看>>
    Python内置函数
    查看>>
    Python2 安装MySQLdb库
    查看>>
    Python2 已终结,入手Python 3,你需要这30个技巧
    查看>>
    python写下拉列表在excel,无法使用python获取Excel下拉列表(组合框)值
    查看>>
    python2.7安装
    查看>>
    Python2.7安装ncmbot时提示:Microsoft Visual C++9.0 is required
    查看>>
    PYTHON2.Git.1
    查看>>
    python20181211
    查看>>
    Python内存管理机制
    查看>>
    Python2中range 和xrange的区别??
    查看>>
    python2和3的区别
    查看>>