カスタム例外を使用して、なんらかの例外が発生したときにユーザーフレンドリーなメッセージが表示されるようにしたいと思います。
これを行うための良い簡単な方法は何ですか?SwingのEDTに干渉しないようにするために、特別な予防措置を講じる必要がありますか?
例外翻訳:
エンドユーザーにとって意味のないメッセージでアプリケーションを汚染するのではなく、アプリの実装のどこかで発生した例外/エラーを変換する意味のある例外とメッセージを作成することをお勧めします。
@Romainのコメントによると、Exception(Throwable cause)コンストラクターを使用して、下位レベルの例外を追跡できます。
からEffective Java 2nd Edition
、アイテム61:
[...]上位層は、下位レベルの例外をキャッチし、代わりに、上位レベルの抽象化の観点から説明できる例外をスローする必要があります。このイディオムは、例外変換として知られています。
// Exception Translation
try {
// Use lower-level abstraction to do our bidding
...
} catch(LowerLevelException e) {
throw new HigherLevelException(...);
}
java.lang.Thread.UncaughtExceptionHandler
自分で気にしていないすべての例外をキャッチするものを使用できます
import java.lang.Thread.UncaughtExceptionHandler;
public class MyUncaughtExceptionHandler implements UncaughtExceptionHandler {
public void uncaughtException(Thread t, Throwable e) {
Frame.showError("Titel", "Description", e, Level.WARNING);
e.printStackTrace();
}
}
アプリに登録します。
public static void main(String[] args) {
Thread.setDefaultUncaughtExceptionHandler(new MyUncaughtExceptionHandler());
}
GUIでは、 SwingXorg.jdesktop.swingx.JXErrorPane
から使用して、例外についてユーザーに通知する優れたエラーポップアップを表示できます。
public static void showError(String title, String desc, Throwable e,
Level level) {
JXErrorPane.showDialog(this, new ErrorInfo(title,
desc, null, null, e, level, null));
}