2012-01-26 15 views
0

例外をUIに転送する必要がある場合は、例外を処理するより良い方法は何ですか。 私は何を使用する必要があります:ユーザーに適切なメッセージを表示するか、またはメソッドからメソッドへのエラーコードをUIまたは多分何かに返すためのUIへのいくつかのメソッドを使って、Checked/Unchecked例外をUIに転送する最も良い方法は?

更新日:

は、私は彼らが表示される場所場所でそれらをどうするのか分からないの例外(だけでそれらの上で多分)すべてにチェック/未チェックを処理するには、Androidのハンドラを使用することをお勧めしてい?例

ため

...

catch(NUllPointerException){ 
UIExceptionHandler.sendEmptyMessage(...); 
} 

...

onHandleMessage(...){ 
//handle exception here - for example show toast 
} 

+0

あなたのUIによって異なります。 – Renato

+0

"Connection is absent"のようなメッセージをUSERに表示します。 – drifter

答えて

3

私は個人的にカスタム例外を作成し、それをUIレイヤーまでスローします。そうすれば、例外をすべて投げているわけではありません。プロジェクトの下位層では他のすべての例外をキャッチできますが、UIにバックアップする必要がある領域にいる場合は、元の例外をキャッチしてカスタム例外を再スローします。

+0

良い方法は何ですか?ExceptionまたはRuntimeExceptionからカスタム例外を拡張しますか? – drifter

+0

http://weblogs.java.net/blog/bakksjo/archive/2005/09/java_exception.html – drifter

+0

http://stackoverflow.com/questions/4589750/exception-handling-pattern – drifter

-1

これは私の現在のプロジェクトでやっていることです。 例外がある場合、それらを捕まえて意味のあるテキストを保存します。たとえば、UserInputが短すぎたり、数値が許可されていないなど、私はErrorVOという配列に格納します。私はその後、UIにエラーメッセージを表示します。

+0

エラーが表示され、配列から適切な値を取得する方法をUIに通知しますか? – drifter

+0

JSONオブジェクトとして送信するか、現在のアプリケーションでvelocityを使用してエラーオブジェクトを文字列のリストとして返信し、テキストを繰り返します。 –

5

Dan Wが言ったように、独自の例外を作成してUIレイヤーにキャッチすることができます。 RuntimeExceptionを拡張すると、メソッドのヘッダに例外を指定することなく例外をスローすることができます。

もう1つ重要なことは、あなたのUIレイヤー上のEDTです。すべてのEvent Dispatcher Thread例外をUIレイヤー内の単一の場所にラップすることはできないため、UncaughtExceptionHandlerを作成し、そこからアプリケーションでトリガーされるすべてのUncaughtExceptionsを管理することができます。

そこから、発生したエラーを簡単にログに記録してユーザーに通知し、スローされ捕捉されなかった例外のタイプに基づいて異なるメッセージを表示できます。そうすれば、間違いが気付かれることはありません。

この説明では、ハンドラの実装の基本について説明します。 How can i catch Event Dispatch Thread (EDT) exceptions?