gpt4 book ai didi

java - Jackson Json Parser-如何处理未找到值的异常

转载 作者:行者123 更新时间:2023-12-01 18:00:42 26 4
gpt4 key购买 nike

快速背景:我基于一个简单的 JSON 文件构建了一个简单的 Spring REST API。我使用 Jackson 来解析 JSON。 API 本身运行良好。例如,当我输入必要的 ID 时,它会返回所需的字段。我在异常处理方面遇到了麻烦。因此,如果我输入 movie/7(没有 ID 为 7 的电影),它只会返回一个空主体。我需要什么代码才能让它抛出异常?请查找下面的代码:

MovieService.java

1. @Component
2. public class MovieService {
3.
4. ObjectMapper objectMapper = new ObjectMapper();
5.
6. public Movie findAll() throws IOException {
7.
8. byte[] jsonData = Files.readAllBytes(Paths.get("movies.json"));
9.
10. Movie movie = objectMapper.readValue(jsonData, Movie.class);
11. return movie;
12.
13. }
14.
15. public Movies findMovie(int id) throws IOException {
16.
17. byte[] jsonData = Files.readAllBytes(Paths.get("movies.json"));
18. Movie movie = objectMapper.readValue(jsonData, Movie.class);
19.
20. for (Movies movies : movie.getMovies()) {
21. if (movies.getMovieId() == id) {
22.
23. return movies;
24. }
25. }
26.
27. return null;
28. }
29. }

MovieController.java

1. @RestController
2. public class MovieController {
3.
4. @Autowired
5. private MovieService movieService;
6.
7. @GetMapping
8. @RequestMapping("/movies")
9. public Movies[] getAll() throws IOException {
10.
11. Movies[] response = movieService.findAll().getMovies();
12. return response;
13.
14. }
15.
16. @GetMapping
17. @RequestMapping("/movies/{id}")
18. public Movies getMovie(@PathVariable int id) throws IOException {
19.
20. Movies response = movieService.findMovie(id);
21. return response;
22. }
23. }

就像我说的,代码工作得非常好。但是我需要实现 if 语句/try-catch 才能抛出异常吗?

最佳答案

使用@ExceptionHandler从服务级别抛出异常。

@ExceptionHandler(NoDataException.class)
public ResponseEntity handleException(NoDataException e) {
return new ResponseEntity("No Data Found", HttpStatus.OK);
}

从您想要处理特定异常的任何地方抛出 NoDataException

从这里阅读更多信息 - https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc

关于java - Jackson Json Parser-如何处理未找到值的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60637325/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com