私はしばらくこの問題を熟考してきましたが、絶えず警告や矛盾を見つけているので、誰かが次の結論を出すことを望んでいます。
エラーコードよりも例外を優先する
私が知っている限りでは、業界で4年間働いて、本やブログなどを読んでから、エラーを処理するための現在のベストプラクティスは、エラーコード(必ずしもエラーコードではなく、エラーを表すタイプ)。
しかし-私にはこれは矛盾しているようです...
実装ではなく、インターフェースへのコーディング
結合を減らすために、インターフェイスまたは抽象化にコーディングします。インターフェースの特定のタイプと実装を知りませんし、知りたくありません。では、どの例外をキャッチする必要があるのかをどのようにして知ることができますか?実装は10種類の例外をスローすることも、何もスローしないこともあります。例外を確実にキャッチするとき、実装について仮定しているのでしょうか?
場合を除き-インターフェイスが持っています...
例外仕様
一部の言語では、開発者は特定のメソッドが特定の例外をスローすることを宣言できます(たとえば、Javaはthrows
キーワードを使用します)。
しかし-これは...を示唆しているようです
漏れやすい抽象化
インターフェイスでスローできる例外を指定する必要があるのはなぜですか?実装が例外をスローする必要がない場合、または他の例外をスローする必要がある場合はどうなりますか?インターフェイスレベルでは、実装がスローする例外を知る方法はありません。
そう...
結論する
ソフトウェアのベストプラクティスに矛盾するように見える(私の目には)のに、なぜ例外が優先されるのですか?また、エラーコードが非常に悪い場合(およびエラーコードの悪徳で販売する必要がない場合)、別の選択肢がありますか?上記のベストプラクティスの要件を満たしているが、エラーコードの戻り値をチェックする呼び出しコードに依存しない、エラー処理の現在の(またはまもなく)技術の現状は何ですか?