spring mvc异常统一处理(ControllerAdvice注解)
@ControllerAdvice public class GlobalExceptionHandler { private final static AsJEELogger LOG = AsJEELoggerFactory.getLogger(GlobalExceptionHandler.class); private final static String EXPTION_MSG_KEY = "message"; @ExceptionHandler(BusinessException.class) @ResponseBody public void handleBizExp(HttpServletRequest request, Exception ex){ LOG.info("Business exception handler " + ex.getMessage() ); request.getSession(true).setAttribute(EXPTION_MSG_KEY, ex.getMessage()); } @ExceptionHandler(SQLException.class) public ModelAndView handSql(Exception ex){ LOG.info("SQL Exception " + ex.getMessage()); ModelAndView mv = new ModelAndView(); mv.addObject("message", ex.getMessage()); mv.setViewName("sql_error"); return mv; } } public class BusinessException extends Exception{ private static final long serialVersionUID = 1L; //业务类型 private String bizType; //业务代码 private int bizCode; //错误信息 private String message; public BusinessException(String bizType, int bizCode, String message){ super(message); this.bizType = bizType; this.bizCode = bizCode; this.message = message; } public BusinessException(String message){ super(message); this.bizType = ""; this.bizCode = -1; this.message = message; } public BusinessException(String bizType, String message){ super(message); this.bizType = bizType; this.bizCode = -1; this.message = message; } public BusinessException(int bizCode, String message){ super(message); this.bizType = ""; this.bizCode = bizCode; this.message = message; } public String getBizType() { return bizType; } public void setBizType(String bizType) { this.bizType = bizType; } public int getBizCode() { return bizCode; } public void setBizCode(int bizCode) { this.bizCode = bizCode; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } } @Controller @RequestMapping("/security/user") public class UserController extends AbstractController<User>{ @Resource private UserService userService; @Resource private ServiceFacade serviceFacade; @RequestMapping("login") public String login() { return "login"; } @RequestMapping("login2") public String login2() throws Exception { throw new SQLException("出错鸟。。。。。。。。。"); } @RequestMapping("login3") public String login3() throws Exception { throw new BusinessException("业务执行异常"); } //此方法抛出的异常不是由GlobalExceptionHandler处理 //而是在catch块处理 @RequestMapping("login4") public String login4() { try { throw new BusinessException("业务执行异常"); } catch (BusinessException e) { e.printStackTrace(); } return "login"; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决