问题
当我们的项目上线是,用户访问某个url执行到某个controller方法的时候突然遇到异常,这时页面就会出现错误提示,这样用户体验不好,也会让别人怀疑我们的实力。
例如:
@Controller
public class UserControllerr {
@ResponseBody
@RequestMapping("/java")
public String Test() {
int a = 1 / 0; //代码执行到这里会抛出除0异常
return "asd";
}
}
当用户执行http://localhost:8080/java
出现错误截图:
这只是简单的错误,有时候更恐怖
思考:
所以当出现异常的时候,我们能不能对异常进行统一处理,规定返回的json格式或是跳转到一个错误页面?
操作步骤:
1、导入坐标
2、创建一个异常处理类,类上方加上@ControllerAdvice注解
3 、在你定义的异常类里面创建一个方法,当出现异常之后的一些操作逻辑
4、在你创建的方法上加上 @ExceptionHandler( )
5、在 @ExceptionHandler( )里面写出你要处理的异常类型,表示当出现什么样的异常,就执行该方法。
6、@ExceptionHandler(Exception.class),表示出现所有的异常都执行该方法,所以这个就是局异常处理的方式
@ControllerAdvice,是Spring3.2提供的新注解,它是一个Controller增强器,可对controller中被 @RequestMapping注解的方法加一些逻辑处理。最常用的就是异常处理
操作代码如下:
导入坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-hateoas</artifactId>
</dependency>
代码实现:
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
@ResponseBody
public String excetionHandlerTest(){
return "系统正在维护中!";
}
总结:
1、@ExceptionHandler(Exception.class),Exception.class,表示出现所有的异常都执行该方法。
2、如果你想具体的异常之行具体的逻辑,可以自定义异常,然后在@ExceptionHandler(“异常类”)括号中写入你要处理的异常即可。