我正在編寫一個封裝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????
處理這些情況的最佳方法是什麼?
這是在客戶端代碼?如果是這樣,客戶端如何知道可能拋出JsonSyntaxException異常? – CodeBlue 2012-02-26 18:16:00
@CodeBlue這可能在客戶端代碼中(他們會知道它可能被拋出,因爲你的API可能指定它可能被拋出),或者它可能在你的getPost方法中。如果它在你的'getPost'方法中,你將不會捕獲'IOException',那麼你可以像檢查異常一樣傳遞'JsonSyntaxException'。 – Jeffrey 2012-02-26 18:19:49
好的。感謝您的澄清。 – CodeBlue 2012-02-26 18:21:07