介绍
软件开发过程中不可避免的需要处理各种异常,代码中会出现大量的try {...} catch {...} finally {...}
代码块,不仅有大量的冗余代码,而且还影响代码的可读性。
Spring从3.2版本开始增加了一个注解@ControllerAdvice
,可以与@ExceptionHandler
、@InitBinder
、@ModelAttribute
等注解配套使用,可以统一进行异常处理。
案例
创建控制类
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/user")
public class UserController {
@GetMapping("/get")
public String get(){
int i = 1 / 0;
return "success";
}
}
创建异常处理类
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* 全局异常处理
*/
@ControllerAdvice
@ResponseBody
public class GlobalExceptionHandler {
//异常处理方法,Controller发生异常后会执行此方法,在此进行统一处理
@ExceptionHandler(Exception.class)
public String handleException(Exception e){
System.out.println("统一处理异常信息:" + e.getMessage());
return "系统错误";
}
}