Как правильно обрабатывать важные непроверенные исключения

Я пишу библиотеку, которая обертывает 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????

Как лучше всего справиться с такими ситуациями?

6
задан Raedwald 12 September 2013 в 16:59
поделиться