0

Activity がプロバイダーを呼び出す Manager クラスを呼び出す状況があります。

アクティビティ -> マネージャー (asyncTask を使用したメソッド) -> プロバイダー

プロバイダーでカスタム例外をスローします

try {
    // here is code that may be exception
} catch (LoadingException e) {
    DataNotAvailableException ex = new DataNotAvailableException();
    ex.initCause(e);
    throw ex;
}

Manager クラスでこの例外を処理します

try {
    //calling provider and catching exception
} catch (DataNotAvailableException e) {
   //TODO rethrow exception to activity
}

しかし、主な問題は、UI を処理するアクティビティに例外をスローできないことです。そこで、接続が利用できないというメッセージ(ダイアログ)をユーザーに表示したいと思います。

例外を再スローしようとすると、エラーが発生します (try/catch ブロックを囲むと言っています)。

キャッチされた例外をアクティビティに送り返すにはどうすればよいですか?

4

4 に答える 4

1

通常のスレッドの代わりにAsyncTaskを使用すると、doInBackgroundメソッドが null/ゼロの値を返した場合にonPostExecute、必要なエラー ダイアログをユーザーに表示するようにロジックを単純に構成できます。を使用できない場合は、UI スレッドでハンドラーAsyncTaskを作成し、例外をキャッチしたら、ハンドラーを介して UI スレッドにメッセージを送信し、そこでエラー ダイアログを表示できます。

于 2013-11-04T14:17:47.447 に答える
0

このようなものを試すことができます

try
{
        ...
}
catch (Exception e)
{
     throw new YourOwnException(e);
}
于 2013-11-04T14:12:38.173 に答える