🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
@ExceptionHandler 是 Spring Framework 中的一个注解,用于定义一个方法,用于处理特定类型的异常。当应用程序中出现了匹配的异常时,@ExceptionHandler 注解会拦截并捕获这些异常,并根据定义的逻辑进行相应的处理。使用 @ExceptionHandler 注解可以让我们更加方便地针对性地处理应用程序中的异常。 以下是一个简单的 @ExceptionHandler 示例: ``` @Controller public class UserController { @ExceptionHandler(UserNotFoundException.class) public ResponseEntity<ErrorResponse> handleUserNotFoundException(UserNotFoundException ex) { ErrorResponse errorResponse = new ErrorResponse(); errorResponse.setCode(HttpStatus.NOT_FOUND.value()); errorResponse.setMessage(ex.getMessage()); return ResponseEntity.status(HttpStatus.NOT_FOUND).body(errorResponse); } @GetMapping("/users/{id}") public ResponseEntity<User> getUser(@PathVariable long id) { User user = userService.getUserById(id); if (user == null) { throw new UserNotFoundException("User not found with id: " + id); } return ResponseEntity.ok(user); } } ``` 在上述示例中,我们使用 @ExceptionHandler 注解定义了一个方法,用于处理 UserNotFoundException 类型的异常。然后我们在 getUser() 方法中抛出了一个 UserNotFoundException 异常。当出现该异常时,@ExceptionHandler 注解会拦截并调用 handleUserNotFoundException() 方法进行处理。在该方法中,我们可以根据实际需求进行一些业务逻辑的处理,并生成一个包含错误代码和错误消息的 ErrorResponse 对象。 需要注意的是,@ExceptionHandler 注解可以定义在 Controller 层或全局异常处理器中。如果在 Controller 层中定义,那么该方法只会处理该 Controller 中抛出的异常;如果在全局异常处理器中定义,那么该方法会处理整个应用程序中抛出的匹配异常。 总之,@ExceptionHandler 是 Spring Framework 中用于定义特定类型异常处理方法的注解,能够帮助我们更加方便地针对性地处理应用程序中的异常,提高用户体验和应用程序的稳定性。