3

これは例外処理に関するばかげたJavaの質問かもしれませんが、ContentProviderのサブクラスからサービスを要求しているUIアクター(Androidアクティビティ)があります。サブクラスは、sd-cardがいっぱいの場合、sd-cardがない場合、ネットワークI / Oエラーなどの場合に、いくつかの例外をスローしたいと考えています。ただし、CPサブクラスをコーディングして例外をスローすると、コンパイラーは例外をに追加することを提案します。 CPクラス。明らかに、基本クラスを変更したくはありませんが、UIでサブクラスの例外をキャッチしたいと思います。

わかる?これは可能ですか?そうでない場合、サービスサブクラスがスロー可能なオブジェクトをUIに戻すためのより良いパターンはありますか?

4

3 に答える 3

8

Unchecked exceptionsメソッドのプロトタイプに追加しなくてもスローできます。

チェックされていない例外は、から継承する例外ですRuntimeException。それはあなたがやりたかったことですか?

于 2010-09-13T21:13:26.223 に答える
6

コンパイラによってチェックされないRuntimeExceptionのサブクラスのインスタンスをスローすることができます。

ただし、そうは言っても、空の例外仕様は基本クラスメソッドのコントラクトの一部です。サブクラスがコントラクトを満たすことが望ましいので、サブクラスインスタンスは、スーパークラスタイプを使用する任意のコードで使用できます。(これはリスコフの置換原則として知られています。)

于 2010-09-13T21:13:15.460 に答える
3

「チェックされた例外」を宣言してキャッチするだけで済みます。RuntimeExceptionsを宣言したり明示的にキャッチしたりする必要はありません。したがって、RuntimeExceptionをスローして、階層内の好きな場所でキャッチできます。

于 2010-09-13T21:14:16.453 に答える