Java 在Spring Boot中处理异常的最佳方法是什么?
我正在用Spring Boot开发一个应用程序。我想知道处理异常的最佳方法是什么。下面是我的代码Java 在Spring Boot中处理异常的最佳方法是什么?,java,spring-boot,exception,controller-advice,Java,Spring Boot,Exception,Controller Advice,我正在用Spring Boot开发一个应用程序。我想知道处理异常的最佳方法是什么。下面是我的代码 ExceptionHandler.java 我正在使用@ControllerAdvice。最好用什么@ControllerAdvice或@RestControllerAdvice @ControllerAdvice public class ExceptionHandler { @ExceptionHandler(NotFoundException.class) public Re
ExceptionHandler.java
我正在使用@ControllerAdvice
。最好用什么@ControllerAdvice
或@RestControllerAdvice
@ControllerAdvice
public class ExceptionHandler {
@ExceptionHandler(NotFoundException.class)
public ResponseEntity<ErrorResponse> notFound(NotFoundException notFoundException) {
ErrorResponse errorResponse = new ErrorResponse(HttpStatus.NOT_FOUND, notFoundException.getMessage());
return new ResponseEntity<ErrorResponse>(errorResponse, HttpStatus.NOT_FOUND);
}
}
在Controller.java
中,代码如下:
@Override
public User update(User newUser) throws NotFoundException {
Optional<User> user = userRepository.findById(newUser.getId());
if (!user.isPresent()) throw new NotFoundException("Record Not Found!");
return userRepository.save(newUser);
}
@PutMapping
public User update(@RequestBody User user) {
User updatedUser = userService.update(user);
if (updatedUser == null) throw new SomeOtherException("Exception while Updating!");
return updatedUser;
}
所以我的问题是
上述方法不好吗?在服务层抛出异常可以吗?它会被
@controlleradvice
自动捕获吗?还是只需要在控制器中输入?我正在寻求处理异常的最佳实践。有人能帮我吗?提前谢谢。你用的方式很好
由于@ControllerAdvice/@RestControllerAdvice用于在整个控制器[flow]中全局处理异常
您还可以在@Service layel中抛出异常。[这是同一件事]
控制员会抓住它的
您可以用自己的方式自定义例外情况。我也喜欢您的方法。也许你也想看看Lombok和@Skillythrows:我觉得没有必要在方法上抛出XYZ,但最终你还是要全局处理它们。非常感谢你的回答和时间。