SpringMVC异常处理
注解:@ExceptionHandler
@Controller
public class MyExceptionHandler {
@ExceptionHandler(NullPointerException.class)
public String nullPoint(){
System.out.println("ExceptionHandler注解");
return "myError";
}
}
@Controller
@RequestMapping("/exception")
public class TestController extends MyExceptionHandler {
private int a;
@RequestMapping("/exceptionTest")
public String exceptionTest(TestController controller){
controller = null;
System.out.println("已进入controller");
System.out.println(controller.a);
return "index";
}
}
自定义异常处理器:HandlerExceptionResolver
@Component
public class MyHandlerExceptionResolver implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
if (e instanceof NullPointerException){
System.out.println("自定义异常处理器");
}
return new ModelAndView("myError");
}
}
@Controller
@RequestMapping("/exception")
public class TestController {
private int a;
@RequestMapping("/exceptionTest")
public String exceptionTest(TestController controller){
controller = null;
System.out.println("已进入controller");
System.out.println(controller.a);
return "index";
}
}
api提供的默认异常处理器:SimpleMappingExceptionResolver
@Configuration
public class ExceptionConfig {
@Bean
public SimpleMappingExceptionResolver getSimpleMappingExceptionResolver(){
SimpleMappingExceptionResolver resolver = new SimpleMappingExceptionResolver();
System.out.println("默认异常处理器");
resolver.setDefaultErrorView("myError");
return resolver;
}
}
@Controller
@RequestMapping("/exception")
public class TestController {
private int a;
@RequestMapping("/exceptionTest")
public String exceptionTest(TestController controller){
controller = null;
System.out.println("已进入controller");
System.out.println(controller.a);
return "index";
}
}
优先级
注解 > 自定义 > 默认