SpringBoot全局异常处理

  任何项目发生异常是不可避免的,使用全局异常捕获发生的异常是十分必要的。SpringBoot框架对全局异常捕获提供了很好的支持,并且操作非常简单。我们只需要创建一个类和一个方法,并添加两个注解:@ControllerAdvice和@ExceptionHandler即可,如:

复制代码
 1 package com.sqy.start.controller;
 2 
 3 import org.springframework.web.bind.annotation.ControllerAdvice;
 4 import org.springframework.web.bind.annotation.ExceptionHandler;
 5 import org.springframework.web.bind.annotation.ResponseBody;
 6 
 7 @ControllerAdvice//还可以指定具体的捕获包
 8 public class GlobalExceptionHandler {
 9     @ExceptionHandler(RuntimeException.class) //捕获所有运行时异常
10     @ResponseBody
11     public String exceptionHandler(){
12         return "error";
13     }
14 }
复制代码

测试:

在controller层添加代码,如:

1         @RequestMapping("/parseInt")
2     @ResponseBody
3     public int parseInt(String num) {
4         int a = Integer.parseInt(num);
5         return a;
6     }    

运行效果:

  其中,@ControllerAdvice:该注解是spring2.3以后新增的一个注解,主要是用来Controller的一些公共的需求的低侵入性增强提供辅助,作用于@RequestMapping标注的方法上。@ExceptionHandler:该注解是配@ControllerAdvice一起使用的注解,自定义错误处理器,可自己组装json字符串,并返回到页面。
  注意:如果想实现,不同的异常有不同的操作的话,只需要将 @ExceptionHandler的value的值不一样就可以了,可以同时实现多个不同的异常处理,但不能出现包含状态。
  由此可见,全局异常捕获的原理是:  使用AOP技术,采用异常通知的方式处理。

  AOP面向切面:无侵入,删除代码也对其他代码没有影响。

原文地址:https://www.cnblogs.com/sqyss/p/10032867.html