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.classNullPointerException.class 等。* ResultCode:这两个类用于封装返回给前端的统一格式的错误信息,您可以根据实际情况自定义。

优势:

  • 代码简洁:无需在每个 Controller 方法中编写重复的 try-catch 语句。* 易于维护:集中管理异常处理逻辑,方便修改和扩展。* 提高用户体验:返回友好的错误信息,提升用户体验。

注意事项:

  • 异常处理方法需要声明 public 访问修饰符。* 每个 @ExceptionHandler 注解只能处理一种异常类型。* 可以根据需要添加自定义异常类型及其对应的处理方法。

希望这篇简短的教程能够帮助您理解如何在 Spring Boot 中使用 @RestControllerAdvice 注解实现全局异常处理。如果您有任何问题或建议,请随时提出。

Spring Boot 全局异常处理:优雅处理代码异常

原文地址: https://www.cveoy.top/t/topic/b76p 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录