Я пишу библиотеку, которая обертывает 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????
Как лучше всего справиться с такими ситуациями?