springboot统一异常处理
异常注解介绍:
@ControllerAdvice 如果是返回json数据 则用 RestControllerAdvice,就可以不加 @ResponseBody
@ExceptionHandler(value=Exception.class //捕获全局异常,处理所有不可知的异常
- 创建一个自定义异常
/**
* 自定义异常
*/
public class MyException extends Exception{
public MyException(String message){
super(message);
}
}
- 在TestController中增加测试异常的映射,抛出MyException异常
/**
* 异常测试接口
* @return
* @throws MyException
*/
@RequestMapping("/testException")
public String testException() throws MyException {
System.out.println("测试异常");
throw new MyException("我的异常");
}
-
创建一个全局处理异常的类
@ControllerAdvice 定义全局异常处理类 @ExceptionHandler 指定自定义错误处理方法拦截的异常类型 @ResponseBody 返回JSON类型的数据 /** * 处理异常类 * @ControllerAdvice 注解定义全局异常处理类 * * @ExceptionHandler 指定自定义错误处理方法拦截的异常类型 * * @ResponseBody 指返回JSON类型的数据 */ @ControllerAdvice public class GlobalMyExceptionHandler { @ExceptionHandler(value = Exception.class) @ResponseBody public Object handlerException(HttpServletRequest request, MyException e) { Map<String, Object> map = new HashMap<>(); map.put("code", -1); map.put("msg", e.getMessage()); map.put("url", request.getRequestURI()); return map; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现