4

GUI アプリケーションでチェックされていない例外を処理する方法が少しわかりません。

たとえば、ユーザーが新しく作成した会社を(組み込みの)データベースに保存する機能があります。

新しく作成された会社を保存する関数は、3 つの例外をスローします。

IllegalArgumentException: 会社または null 以外のフィールドが null の場合 (手動でチェックしてスロー)。

EntityExistException: 会社 (その名前) が既に存在する場合。(また、手動でチェックしてスローします)。

PersistenceException: 保存時に問題が発生した場合。(キャッチして再スロー)。

メソッドを呼び出す関数は、saveCompany3 つの例外をすべてキャッチしてログに記録し、エラーが発生したことを示すダイアログをユーザーに表示します。

私は今、それらを捕まえる必要があるかどうか疑問に思っていますか? globalExceptionHandlerそれとも、それらを(私もそれらを見ることができる)まで走らせても大丈夫でしょうか?また、私の反応はどうあるべきか疑問に思っていますか?

エラーが発生したことをユーザーに伝えてプログラムを実行する必要があるか (プログラムの他の部分が正しく機能するため)、またはユーザーに伝えてからプログラムを終了する必要があります (そこにあってはならないプログラマーのエラーであるため) ?

4

3 に答える 3

4

IllegalArgumentExceptionの場合は、例外をキャッチして、データを修正するようにユーザーに指示する必要があります(スタックトレースを出力しないでください)。

EntityExistExceptionの場合、ユーザーは会社がすでに存在することを通知されるべきであり、おそらく彼または彼女はそれを更新することを検討する必要があります。

ユーザーがPersistenceExceptionを受け取ると、スタックトレース(およびおそらく開発者に関連する他のデータ)を含むダイアログウィンドウが表示され、バグレポートを送信するように通知されます。

于 2012-10-12T16:29:35.810 に答える
4

良いニュースは、すべての適切な質問をしているということです。

エラーが発生したことをユーザーに伝えてプログラムを実行させるべきか (プログラムの他の部分が適切に機能するため)、またはユーザーに伝えてからプログラムを終了するべきか (そこにあってはならないプログラマーのエラーであるため) ?

これは、慎重に検討する必要がある設計上の問題です。それが回復可能なエラーであり、プログラムが実行を継続するためにできることが何もない場合、プログラムはユーザーにオプションを与えずにシャットダウンする必要があります。プログラムの一部が停止しなければならず、他の部分が終了する可能性がある場合は、ユーザーに通知する必要があります。ユーザーがプログラムを実行できるようにデータを修正する必要がある場合は、ユーザーにその旨を通知する必要があります。等 はい、あなたは正しい質問をしていますが、実際にそれらについて考え、賢明でなければなりません。

于 2012-10-12T16:17:11.713 に答える
1

私の意見では、次のことを行います

EntityExistException処置: エンティティがすでに存在することをユーザーに知らせてください。アプリを続行します。

PersistenceExceptionand IllegalArgumentException: ユーザーに一般的なメッセージを表示し、アプリを停止します。

上記の 2 つの例外の処理方法の違いがわかると思います。1 つは、ユーザーが原因で修正できるものです。もう 1 つは、ユーザーが何もできないことです。

于 2012-10-12T16:22:21.537 に答える