Я пишу библиотеку, которая оборачивается вокруг REST API. Обёртка, которую я создаю, использует GSON для десериализации json в мой объект. По сути, как-то так ...
public Post getPost(url) throws IOException {
String jsonString = httpClient.get(url);
Post p = gson.fromJson(jsonString, Post.class);
// return Post to client and let client do something with it.
}
Если я правильно понимаю, IOException является проверенным исключением. Я говорю своему клиенту: Эй, приятель, тебе лучше остерегаться и оправиться от этого исключения. Теперь мой клиент может обернуть вызов в try / catch и определить, что делать, если произошел сбой в сети.
Метод GSON fromJson () вызывает исключение JsonSyntaxException. Я считаю, что это не проверяется в мире Java, так как одним из его суперклассов является RuntimeException, а также потому, что мне не нужно добавлять try / catch или другие «броски», такие как IOException.
Предполагая, что то, что я сказал до сих пор, является правильным - как именно API и клиент должны разрешить эту ситуацию? Если строка json является мусором, мой клиент потерпит неудачу из-за JsonSyntaxException, потому что он не проверен.
// Client
PostService postService = new PostService();
try{
Post p = postService.getPost(urlString);
// do something with post
}catch (IOException){
// handle exception
}
// ok, what about a JsonSyntaxException????
Как лучше всего справляться с этими ситуациями?