Spring Boot 全局异常处理:优雅处理代码异常
Spring Boot 全局异常处理:优雅处理代码异常
在 Spring Boot 应用中,异常处理是至关重要的环节。为了避免将大量 try-catch 语句散落在业务代码中,我们可以利用 @RestControllerAdvice 注解构建全局异常处理器,从而实现更优雅、更易维护的异常处理机制。
以下是使用 @RestControllerAdvice 处理常见异常的示例代码:java@RestControllerAdvicepublic class ProjectExceptionAdvice {
@ExceptionHandler(SQLException.class) public Result handlerSQLException(SQLException ex) { ex.printStackTrace(); return new Result(Code.ERROR, '录入数据格式错误,请确认后重试'); }
@ExceptionHandler(ClassNotFoundException.class) public Result handlerClassNotFoundException(ClassNotFoundException ex) { ex.printStackTrace(); return new Result(Code.ERROR, '类未找到'); }
@ExceptionHandler(NullPointerException.class) public Result handlerNullPointerException(NullPointerException ex) { ex.printStackTrace(); return new Result(Code.ERROR, '空指针异常'); }
@ExceptionHandler(ArrayIndexOutOfBoundsException.class) public Result handlerArrayIndexOutOfBoundsException(ArrayIndexOutOfBoundsException ex) { ex.printStackTrace(); return new Result(Code.ERROR, '数组越界异常'); }
@ExceptionHandler(FileNotFoundException.class) public Result handlerFileNotFoundException(FileNotFoundException ex) { ex.printStackTrace(); return new Result(Code.ERROR, '找不到文件'); }
@ExceptionHandler(Exception.class) public Result handlerException(Exception ex) { ex.printStackTrace(); return new Result(Code.ERROR, '未知服务器错误,请联系管理员'); }}
代码解析:
@RestControllerAdvice:该注解表明这是一个全局异常处理类,它会拦截所有 Controller 层抛出的异常。*@ExceptionHandler:该注解用于指定要处理的异常类型,例如SQLException.class、NullPointerException.class等。*Result和Code:这两个类用于封装返回给前端的统一格式的错误信息,您可以根据实际情况自定义。
优势:
- 代码简洁:无需在每个 Controller 方法中编写重复的 try-catch 语句。* 易于维护:集中管理异常处理逻辑,方便修改和扩展。* 提高用户体验:返回友好的错误信息,提升用户体验。
注意事项:
- 异常处理方法需要声明
public访问修饰符。* 每个@ExceptionHandler注解只能处理一种异常类型。* 可以根据需要添加自定义异常类型及其对应的处理方法。
希望这篇简短的教程能够帮助您理解如何在 Spring Boot 中使用 @RestControllerAdvice 注解实现全局异常处理。如果您有任何问题或建议,请随时提出。
原文地址: https://www.cveoy.top/t/topic/b76p 著作权归作者所有。请勿转载和采集!