异常的统一管理

1.自定义异常

就是我们自己重新定义一个异常类,继承runtimeException
public class UserNameAlreadyExistsException  extends RuntimeException{
  private static final long serialVersionUID = 1L;

  public UserNameAlreadyExistsException(String message) {
      super(message);
}

2.判断是否会出现异常

    //2.检查用户名是否被占用
    int  count = userMapper.getUserCount (userName);
    //3.如果被占用则抛出自定义异常
    if (count>0) {
        throw new UserNameAlreadyExistsException(GlobaleMessage.USERNAME_ALREADYEXISTS);
    }

3.在GlobaleMessage类中定义常量

public class GlobaleMessage {
    public static final String USERNAME_ALREADYEXISTS = "用户名已存在,请重新注册!";

}

4.在MVC文件中配置

<!-- 配置ExceptionMapping统一管理项目中的异常 -->
<bean id="simpleMappingExceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    <property name="exceptionMappings">
        <props>
            <!-- key属性:异常全类名,“开始和结束标签之间部分”:捕获到异常后要前往的逻辑视图名称 -->
            <prop key="com.atguigu.survey.e.UserNameAlreadyExistsException">guest/user_registUI</prop>
        </props>
    </property>
</bean>

5.在页面上取出异常消息

SpringMVC捕获到异常后,会将异常对象保存到请求域中,属性名是exception
在页面上使用下面的EL表达式就可以取出异常信息
<c:if test="${requestScope.exception != null }">
            <div class="text-center">${requestScope.exception.message }</div>
        </c:if>

6.意义

这个机制建立起来后,可以在各个不同模块中都是用相同的办法显示错误消息

猜你喜欢

转载自my.oschina.net/u/3298130/blog/1794895