对于产生的异常信息,我们不能直接返回给用户,这样体验感很差,所以我们一般都返回一个异常显示页面,告诉用户出现了什么异常信息,比如404,500等错误.
一.自定义异常处理
- 概述:我们可以通过实现HandlerExceptionResolver接口来自定义处理异常信息
- 第一步:书写Myexception类实现HandlerExceptionResolver
package com.offcn.exception;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Myexception implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse,
Object o,
Exception e) {
ModelAndView modelAndView=new ModelAndView();
modelAndView.setViewName("error");
String meg=e.getMessage();
modelAndView.addObject("message",meg);
return modelAndView;
}
}
- 第二步:直接在容器中注入异常处理对象
<bean id="myexception" class="com.offcn.exception.Myexception"></bean>
二.使用SpringMVC内置的异常处理器处理异常
- 直接在容器中配置这个内置处理器就ok了
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="java.lang.Exception">error</prop>
</props>
</property>
</bean>
三.使用局部(不同的Controller)异常处理
- 概述:我们不希望所有的控制器出现异常的信息处理都使用一样的,我们可以针对不同的控制器中出现的异常单独处理,比如vip用户和普通用户我们要不同的效果
- 实现方法:在控制器中定义一个方法,使用注解来实现该方法变成局部处理异常方法
- 注意点:
1 | 使用注解:@ExceptionHandler |
---|---|
2 | 参数列表必须为(HttpServletRequest request,Exception e) |
- 代码实现:
@ExceptionHandler
public String handlerException(HttpServletRequest request,Exception e){
return "error";//直接返回异常页面
}