Kotlinはチェック例外を取得していないので、インターフェイスメソッドによってスローされると予想される例外を文書化する正しい方法は何ですか?私はそれをインターフェイスまたは実装クラスに記述するべきですか(具体的なメソッドが実際にそれをスローする場合のみ)?Kotlin - インターフェイスメソッドによってスローされたドキュメント例外
1
A
答えて
0
クライアントはインターフェイスに対してプログラムを作成するので、そのインターフェイスのJavadoc/KDocでドキュメントを作成することをお勧めします。
Oracleをお勧めします:それは投げることができる例外を含む、メソッドのAPIを文書化するので、良いことだ場合
は、なぜランタイムを指定しないで、あなたは実際にそれらは例えばthisスレッドで議論されている文書化すべきかどうか例外も?
実行時例外は、プログラミング上の問題の結果発生する問題を表しているため、APIクライアントコードは、APIクライアントコードから回復したり、何らかの形で処理することは合理的に期待できません。このような問題には、ゼロ除算などの算術例外が含まれます。 null参照によってオブジェクトにアクセスしようとするなどのポインタ例外。大きすぎるまたは小さすぎるインデックスを使用して配列要素にアクセスしようとするなど、例外のインデックス付けを行うことができます。
実行時例外はプログラム内のどこでも発生する可能性があり、典型的な例外では非常に多くなる可能性があります。すべてのメソッド宣言でランタイム例外を追加すると、プログラムの明瞭度が低下します。
情報がクライアントに役立つ場合は、文書化する必要があります(つまり、クライアントが対応できる場合、たとえばIOException
)。 IllegalArgumentException
などの「通常の」実行時例外については、「いいえ」と言いますが、それらを文書化しないでください。
関連する問題
- 1. BluetoothServiceJni:コールバック 'btgattc_notify_cb'によって例外がスローされました
- 2. com.parse.ParseException:bolts.ExecutorException:Executorによって例外がスローされた
- 3. サービスメソッドによってスローされた例外のリストを表示
- 4. WPFデータバインディング:プロパティゲッターによってスローされた例外をキャッチ
- 5. アプリケーションクラス 'java.lang.String.substring:1339'によってスローされた例外Websphere Liberty
- 6. spring-aopによってスローされた例外
- 7. ポインタによって捕捉された再スロー例外
- 8. 例外が処理されなかった - 再スロー例外
- 9. PtrToStructureによってスローされる引数例外
- 10. Javadoc @throwsエラーコードハンドラによってスローされる例外のタグ
- 11. ファイルクローズによってスローされた例外を処理するには?
- 12. コードの前にオブジェクトによってスローされたキャッチ例外... c#
- 13. Java例外処理:外部依存モジュールによってスローされた例外をキャッチ
- 14. プロパティグリッドによってスローされた例外を処理する方法は?
- 15. Webイベントプロバイダ 'EventLogProvider'によって次の例外がスローされました
- 16. Javascript:他のスクリプトによってスローされた例外を監視する
- 17. CompletableFuture.supplyAsyncによってスローされた例外を処理する方法
- 18. 呼び出しのターゲットによって例外がスローされました
- 19. ラクダの文脈でcxfによってスローされた例外をキャッチ
- 20. httpLbs(http-client)によってスローされた例外をキャッチする方法
- 21. imageWithDataによってスローされた例外をキャッチする方法:
- 22. Flexで埋め込みURLによってスローされた例外をキャッチ
- 23. CLRによってスローされた例外を検出する方法は?
- 24. 呼び出しのターゲットによってVB.Net例外がスローされました
- 25. returnステートメントによってC++のbad_array_new_length例外がスローされましたか?
- 26. ExecutorServiceタスクによってスローされた例外を処理する方法は?
- 27. boost :: ifind_firstによってどのような例外がスローされますか?
- 28. 間違った例外がスローされました
- 29. 例外がスローされたエラー
- 30. AuthenticationProviderでスローされたキャッチ例外
'@ Throws'アノテーションを使用できます。 IMOはこれをインターフェイスメソッドに配置するのが最も理にかなっています。 –
実装上にある場合、インタフェースを受け取る関数は、それが投げることができるか、投げることができるかを知りません。さらに悪いことに、異なるものを投げている2つの実装があります。参照:[LSP](https://en.wikipedia.org/wiki/Liskov_substitution_principle) – chris