1.**全局异常**SimpleMappingExceptionResolver
2.局部异常
3.自定义ExceptionResolver(很少用)
先找局部,局部没有,找全局。
全局异常
在applicationContext.xml中
<!-- 异常处理器 -->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="java.long.Exception">error</prop>
</props>
</property>
</bean>
局部异常
在AgeController中:
//当前Controller异常处理
@ExceptionHandler//局部异常处理方法,仅限于当前的Controller
public String handleException(
HttpServletRequest request,
Exception e){
request.setAttribute("msg", "信息有误,失败!");
return "age";
}
使用自定义的
1.定义异常类:
public class MyExceptionHandler implements HandlerExceptionResolver{
public ModelAndView resolveException(
HttpServletRequest request,
HttpServletResponse response,
Object method, Exception e) {
//将异常信息写入文件
System.out.println("将异常信息写入文件");
//跳转到错误页面
ModelAndView mav = new ModelAndView();
mav.setViewName("error");
return mav;
}
}
2.在applicationContext.xml中:
<!-- 使用自定义的ExceptionResolver -->
<bean class="org.tarena.exception.MyExceptionHandler"></bean>