私はREST APIをラップするライブラリを作成しています。私が作成しているラッパーは、GSONを使用してjsonをデシリアライズしてオブジェクトにします。基本的には、このようなものです...重要で未チェックの例外を正しく処理する方法
私が正しく理解すれば、IOExceptionはチェック例外です。私はクライアントに言っています:ねえ、おまえ - あなたはこの例外から気をつけて回復するほうがいい。これで私のクライアントはtry/catchで呼び出しをラップし、何らかのネットワーク障害が発生した場合の対処方法を決定できます。
GSONのfromJson()メソッドは、JsonSyntaxExceptionをスローします。スーパークラスの1つがRuntimeExceptionであり、try/catchやIOExceptionのような別の "throws"を追加する必要がないため、これはJavaの世界では未チェックと考えられます。
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
@CodeBlueこれは、クライアントコード内にある可能性があります(APIがスローする可能性があると指定できるため、スローされる可能性があります)。または、getPostメソッドにある可能性があります。 'getPost'メソッドの中に' IOException'をキャッチしない場合は、チェックされた例外として 'JsonSyntaxException'を渡します。 – Jeffrey
説明をありがとう。 – CodeBlue