Java项目全局异常拦截器

张开发
2026/4/18 1:32:56 15 分钟阅读

分享文章

Java项目全局异常拦截器
1.问题概述在开发过程中我们会对系统运行时可能出现的异常进行显示的处理但是尽管已经尽力的去处理异常也难免会有疏漏以及未预期的异常针对这种问题我们通常选择去加一个兜底异常也就当程序出现未与预期的异常的时候进行异常的拦截对用户进行提醒避免用户在使用的无响应造成困扰。2.全局异常处理器配置RestControllerAdvice public class GlobalResultHandler { private static final Logger logger LoggerFactory.getLogger(GlobalResultHandler.class); // 兜底异常 ExceptionHandler(RuntimeException.class) public ResponseEntityString handleAllExceptions(Exception ex) { // 日志记录 logger.error(ex.getMessage(), ex); return new ResponseEntity(服务器发生未知错误请稍后再试, HttpStatus.INTERNAL_SERVER_ERROR); } }3.针对特定异常配置返回信息在实际使用中我们可能会有自定义异常或者第三方框架的异常配置针对这些异常我们可能希望返回的不只是系统的兜底异常更想要针对对应的异常去配置相应的返回信息以下是某些异常配置示例。RestControllerAdvice public class GlobalResultHandler { private static final Logger logger LoggerFactory.getLogger(GlobalResultHandler.class); // 处理所有异常 ExceptionHandler(RuntimeException.class) public ResponseEntityString handleAllExceptions(Exception ex) { logger.error(ex.getMessage(), ex); return new ResponseEntity(服务器发生未知错误请稍后再试, HttpStatus.INTERNAL_SERVER_ERROR); }// 自定义未登录异常ExceptionHandler(NOLoginException.class) public ResponseEntityString handleLoginExceptions(Exception ex) { ex.printStackTrace(); return new ResponseEntity(请登录后重试, HttpStatus.UNAUTHORIZED); }// 参数校验失败抛出的异常ExceptionHandler(MethodArgumentNotValidException.class) public Result methodArgumentNotValidExceptionHandler(MethodArgumentNotValidException e) { ListFieldError fieldErrors e.getBindingResult().getFieldErrors(); ListString collect fieldErrors.stream().map(o - o.getDefaultMessage()).collect(Collectors.toList()); return Result.commonResult(Constant.BAD_REQUEST, 请填写必填参数, collect); } }4.结尾在项目中的全局异常处理大致可为以上几种谢谢。

更多文章