springboot 高级教程 全局异常处理

在 Spring Boot 中,你可以使用 `@ControllerAdvice` + `@ExceptionHandler` 注解来实现全局异常处理 。`@ControllerAdvice` 注解用于定义异常处理器,`@ExceptionHandler` 注解用于定义处理异常的方法 。一个异常处理器可以处理多个异常,也可以为每种异常定义不同的处理方法 。
以下是一个简单的全局异常处理器的示例:
@ControllerAdvicepublic class GlobalExceptionHandler {@ExceptionHandler(Exception.class)public ResponseEntity handleException(Exception e) {// 定义处理异常的逻辑String errorMsg = "出错啦!请稍后再试 。";return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(errorMsg);}}
上述代码定义了一个全局异常处理器,可以处理所有异常 。当 Spring Boot 应用程序抛出异常时,将被这个处理器捕获,并调用 `handleException` 方法来处理 。该方法会返回一个包含错误消息的 HTTP 响应体 。
需要注意的是,`@ControllerAdvice` 注解一般需要定义在一个单独的类中 , 而不是在控制器类中 。
@ControllerAdvicepublic class GlobalExceptionHandler {@ExceptionHandler(RuntimeException.class)public ResponseEntity handleRuntimeException(RuntimeException e) {// 处理 RuntimeException 异常String errorMsg = "出错啦!";return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(errorMsg);}@ExceptionHandler(MyException.class)public ResponseEntity handleMyException(MyException e) {// 处理 MyException 异常String errorMsg = "自定义异常:" + e.getMessage();return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(errorMsg);}}
在上述代码中 , 定义了两个异常处理方法 。`handleRuntimeException` 方法处理 `RuntimeException` 类型的异常,而 `handleMyException` 方法处理 `MyException` 类型的异常 。根据抛出的异常类型 , Spring Boot 将选择相应的方法来处理异常 。
【springboot 高级教程 全局异常处理】以上就是朝夕生活(www.30zx.com)关于“springboot 高级教程 全局异常处理”的详细内容 , 希望对大家有所帮助!

猜你喜欢