zoukankan      html  css  js  c++  java
  • SpringMVC异常处理

    作用

    如客户端调用web程序时,如果程序出现异常,特别是运行时异常;如果没有try-catch进行捕获,

    异常将最终不会被ExceptionResolver进行处理,导致程序出现500错误。亦或者当客户端访问一个

    不存在的商品详情时,此时需要呈现给用户一个显示页,用户告知“您查找的商品不存在”等信息。

    没有异常处理机制下的程序

    非运行时异常:

    当程序需要显式的try-catch捕获进行处理时,不会造成500错误码。

    但如果通过throws方式逐层抛出最终到Controller抛出,DispatcherServlet将异常分发给ExceptionResolver模块;如果未添加特殊处理,则程序抛出500错误码。

    运行时异常:

    由于不需要显式的try-catch,如果在程序未添加处理的情况下,通常会抛出500错误码。

    访问详情不存在时显示页:

    如果没有异常机制的统一处理,则添加return "redirect:/notFound.html";来处理

    Spring MVC的异常处理机制下的处理方案

    处理逻辑:

    将系统中的异常、自定义异常(逻辑错误如访问详情时数据不存在),通过throws的方式,抛至springExceptionResolver来统一进行处理。

    有三种方式:SimpleMappingExceptionResolver spring提供的简单异常处理器实现,实现HandlerExceptionResolver接口的自定义异常处理器,@ExceptionHandler注解实现异常处理,

    实现HandlerExceptionResolver接口的自定义异常处理器

    实现方法:

     建立CustomExceptionResolver实现HandlerExceptionResolver 接口。实现resolveException(),用于完成根据当前异常类型,在展示页展示对应的提示。并需在springmvc.xml中配置这个自定义的异常处理器。

    可以获取出现异常的对象信息,比较常用

    控制类添加异常

     

    大配置文件

     

    Jsp页面

     

    spring提供的简单异常处理器SimpleMappingExceptionResolver通过自定义异常CustomException(属性message)
    当系统出现CustomException异常时,封装当前的错误原因(如“您查找的商品不存在”),被ExceptionResolver
    发至SimpleMappingExceptionResolver,通过配置文件找到对应的custom_error.jsp展示对应的错误信息。其他异常
    则通过error.jsp展示给客户端,提示“未知错误”

    @ExceptionHandler注解实现异常处理

    使用@ExceptionHandler注解实现异常处理,需每一个controller都继承自该类,对于代码的侵入性大,一般不用。

    AgeError异常类

     

    NameError异常类

     

    大配置

     

     

  • 相关阅读:
    .NET 2.0泛型集合类与.NET 1.1集合类的区别(二)
    关于插件的好文章
    MemberInfo.GetCustomAttributes和MemberDescriptor.Attributes获取特性的不同
    新一代编程语言
    .NET 2.0泛型集合类与.NET 1.1集合类的区别(一)
    发现一篇关于.NET 2.0中关于事务命名空间的好文章
    C# WinForm控件美化扩展系列之给TextBox加水印
    log4.net
    C# GDI+ 双缓冲
    C# WinForm控件美化扩展系列之ListBox
  • 原文地址:https://www.cnblogs.com/qinzhenyu/p/11834832.html
Copyright © 2011-2022 走看看