SpringMVC异常处理

SpringMVC异常处理

1、 Spring MVC处理异常有3种方式: 
1)使用Spring-MVC提供的SimpleMappingExceptionResolver 

此方法只需要在SpringMVC配置文件中增加异常处理配置即可:

<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">  

      

    <property name="defaultErrorView" value="error">property>  

      

    <property name="exceptionAttribute" value="ex">property>  

     

    <property name="exceptionMappings">  

        <props>  

            

 <prop key="com.core.exception.BusinessException">business_errorprop>  

 <prop key="com.core.exception.ParameterException">parameter_errorprop>  

<prop key="cn.bdqn.pojo.UserException">errorprop>

              

        props>  

    property>  

bean>

 

附上一个自定义异常类的代码:

public class UserException extends RuntimeException{

private static final long serialVersionUID = 1L;

public UserException() {

super();

}

public UserException(String message, Throwable cause,

boolean enableSuppression, boolean writableStackTrace) {

super(message, cause, enableSuppression, writableStackTrace);

}

public UserException(String message, Throwable cause) {

super(message, cause);

}

public UserException(String message) {

super(message);

}

public UserException(Throwable cause) {

super(cause);

}

}

 

异常处理Controller

@RequestMapping(value="/login",method=RequestMethod.POST)

public String login(String userName,String password,HttpSession session){

if(!userList.containsKey(userName)){

throw new UserException("用户名不存在!");

}

User _user = userList.get(userName);

if(!_user.getPassword().equals(password)){

throw new UserException("密码不正确!");

}

session.setAttribute("loginUser", _user);

return "redirect:/user/userlist";

}

 

异常页面调用显示信息:

<body>

${exception.message}

body>


2)实现Spring的异常处理接口HandlerExceptionResolver 自定义自己的异常处理器; 
3)使用@ExceptionHandler注解实现异常处理; 

 

2、 未捕获异常的处理 
对于Unchecked Exception而言,由于代码不强制捕获,往往被忽略,如果运行期产生了UncheckedException,而代码中又没有进行相应的捕获和处理,则我们可能不得不面对尴尬的404500……等服务器内部错误提示页面。 
  我们需要一个全面而有效的异常处理机制。目前大多数服务器也都支持在Web.xml中通过(Websphere/Weblogic)或者(Tomcat)节点配置特定异常情况的显示页面。

 

修改Web.xml文件,示例如下:

  

<error-page>  

    <exception-type>java.lang.Throwableexception-type>  

    <location>/500.jsplocation>  

error-page>  

<error-page>  

    <error-code>500error-code>  

    <location>/500.jsplocation>  

error-page>  

<error-page>  

    <error-code>404error-code>  

    <location>/404.jsplocation>  

error-page>  

 

3、 比较异常处理方式的优缺点:
        Spring MVC集成异常处理3种方式都可以达到统一异常处理的目标。从3种方式的优缺点比较,若只需要简单的集成异常处理,推荐使用SimpleMappingExceptionResolver即可;若需要集成的异常处理能够更具个性化,提供给用户更详细的异常信息,推荐自定义实现HandlerExceptionResolver接口的方式;若不喜欢Spring配置文件或要实现“零配置”,且能接受对原有代码的适当入侵,则建议使用@ExceptionHandler注解方式。 

 

【注:WEB.XML,就是指定error-codepage到指定地址,这也是最传统和常见的做法

而Spring的全局异常捕获功能,这种相对可操作性更强一些,可根据自己的需要做一后善后处理,比如日志记录等。各个方案之间没有依赖关系,可以相互独立使用。】

 

你可能感兴趣的:(SSM,Spring,MVC)