对于controller层出现的异常,我们可以专门写个ExceptionController类来管理
首先在别的controller层写个异常
@Controller
@RequestMapping("/admin")
public class AdminController {
@RequestMapping("/testError")
public String testError(){
int a=7/0;
return "suc";
}
}
然后再写个ExceptionController来进行处理
package com.yy.controller;
@ControllerAdvice
//用于注解该控制器类为全局异常处理类
public class TestErrorController {
@ExceptionHandler
public String exceptionHand(Exception e){
System.out.println(e.getMessage());
return "error";
}
}
这样,当其他controller层中的类发生异常后,将自动在ExceptionController里面寻找相对应的异常然后处理,(我们可以写多个ControllerAdvice来处理不同的exception)这里直接跳到exceptionHand()方法中处理(方法中可以记日志,打印异常信息等),最终跳到error.jsp界面
注意,全局异常类其实相当于一个切面一样,但是这个全局异常不能注释成service,所以不能放在aop层中,所以它还是放在controller层里
----------------------------------------------------------------------------------------------------------------------------------
当异常处理很简单时(不搞日志,只跳转之类的),我们可以直接在springMVC的配置文件中配置全局异常,所以这里不再贴代码,大家知道就好