すわりんのブログ

androidとかサブカルとかのブログです

APIのエラーをいかに捌くか

APIのエラーを表現する時にclassかexceptionかenumか迷っていたのでメモ。

APIと通信すると正常系と異常系の処理について考える必要がある。 さらに異常系は2種類あり APIとの通信は成功しているがパラメーター過不足などのAPIのエラー URLが存在しない、回線不調などの通信系のエラーが考えられる。

APIがエラーを返す場合 TwitterAPIを例にみてみよう

https://developer.twitter.com/en/docs/basics/response-codes

{"errors":[{"message":"Sorry, that page does not exist","code":34}]}

複数のエラーを表現するためErrorsという配列に入っているようだ。 アプリ層でもこのcodeとmessageを扱いとする。

その条件でエラーを表現する時 Exception or Class or Enumの選択があるが Enumは変数を持てないので,messagesやcodeを再現できない。 Exceptionも同様(messageにjson入れることは出来るが無理やりなのでNG) となるとAPIのエラーはClassで再現するのが適していそう。

そして通信系のエラーはExceptionか。

次回は同じリクエストが別のjsonを返すケースについて考えてみる。

[所要時間:15分]