「チェックされているチェックされていない例外」のトピックについては、SOにはかなりの記事があります。 This answerは、おそらく最も多面的で有益なものです。しかし、私はそこに提示された論理に従うためにまだ矛盾しており、その理由があります。理論にチェックされているものを使用する場合は、関連するビルトイン未チェック例外を使用する必要がありますか?
私は互いに類似したサービスのセットの周りにラッパーAPIを構築しています。しかし、それらの間には軽微な違い(または将来の可能性)があるため、(セカンダリとショートカットの)特定の機能が一部のサービスでサポートされ、他の機能によってサポートされない可能性があります。だから、次のアプローチで行くのは論理的だと思われます:
public interface GenericWrapperInterface {
void possiblyUnsupportedOperation() throws java.lang.UnsupportedOperationException;
}
なぜUnsupportedOperationException
?それはこの種の状況のために設計されているからです。
しかし、Oracleのown manualに加えて、すべての関連する投稿では、クライアントが回復できた問題、または予測可能だが回避不可能な問題を通知するために例外が使用された場合、 1。一部の操作では、使用できない可能性が事前にわかっている可能性があり、操作は重要ではなく、必要な場合は避けることができるため、これらの要件に準拠しています。
私はこの謎に迷っています。例外的な使用法の一般的なロジックに違反する必要がありますか?それとも独自のチェックされた代替コードを作成してコードを複製し、APIユーザー間で混乱を招くのでしょうか?
操作がサポートされていないことが判明している場合は、発生してはならないプログラミングエラーであるため、未確認例外を呼び出す必要があります。 – ZhongYu
@ ZhongYuでは、クライアントコードはサポートの欠如の可能性を認識している可能性がありますが、各特定の実装オブジェクトがそのサポートを持っているかどうかは、実行時までは不明です。 – Semisonic