Spring教程之异常捕获方式
作者:terrybg
这篇文章主要介绍了Spring异常捕获方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
概述
在Spring中,封装了全局异常捕获方法,方便我们处理和管理异常,捕获异常可以解决以下业务场景:
- 友好返回给用户提示。
- 记录日志方便排查问题
- 方便管理异常等
以下程序模拟在Controller中出现异常:
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 全局异常捕获测试
* @author terry
* @version 1.0
* @date 2022/1/6 14:29
*/
@RestController
@RequestMapping("/gloab")
public class GloabExceptionController {
@RequestMapping("/test1")
public String test1(){
// 模拟异常
int i = 1/0;
return "success";
}
}打印输出
{
"timestamp": "2022-01-06T06:51:26.538+00:00",
"status": 500,
"error": "Internal Server Error",
"message": "",
"path": "/gloab/test1"
}
出现问题:
当发送异常之后,后续的代码都不执行了,而且返回的参数也不是我们需要的。
@RestControllerAdvice注解
@RestControllerAdvice和@ControllerAdvice都是全局捕获异常配置类,@RestControllerAdvice更适用于返回JSON数据,@ControllerAdvice返回JSON需要方法额外添加@ResponseBody。
@RestControllerAdvice
class GloabExceptionHandler {
@ExceptionHandler(value = Exception.class)
public String exceptionHandler(Exception e){
System.out.println("ERROR: " + e.getMessage());
return "error";
}
}打印输出
error
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
