- try catch 异常捕获
正常方法中,对于可能会发生异常的方法,我们使用try catch 去捕获它,在catch里面做处理:
@RestController
public class ErrorController {
@RequestMapping("/ErrorRes")
public String ErrorRes(int i){
int j = 2;
try {
j = 1/i;
} catch (Exception e) {
return "系统错误";
}
return "Success"+j;
}
}
- SpringBoot中的AOP切面技术捕获全局异常
实际开发中,不会去每个异常都使用try catch,而且难免有未想到的异常忘记捕获,设定一个全局捕获异常类可是少些很多代码:
注:切面类也要放在启动类能扫到的范围内
/*@ControllerAdvice 捕获全局异常注解,可设置扫包范围
*@RestControllerAdvice = @ControllerAdvice + @RequestMapping
*/
@ControllerAdvice(basePackages="com.gxl.gree.controller")
public class CatchAllError {
/*@ExceptionHandler(RuntimeException.class) 返回运行时异常*/
/*@ResponseBody 返回JSON格式
*@modeAndView 返回页面(没找到这个注解,不写@ResponseBody,加上运行时异常,按访问jsp页面方法写)
*/
// 返回JSON
@ExceptionHandler(RuntimeException.class)
@ResponseBody
public Map<String, Object> errorResult(){
Map<String, Object> errorResultMap = new HashMap<String, Object>();
errorResultMap.put("errorCode", "500");
errorResultMap.put("errorMsg", "系统错误!!!");
return errorResultMap;
}
// 返回页面
// @ExceptionHandler(RuntimeException.class)
// public String errorResult(){
// return "hellojsp";
// }
}
- 单独的Spring配置AOP切面类
主要是涉及配置Speing.xml和切面类的写法
参考地址:
https://www.cnblogs.com/biehongli/p/6640406.html