質問

デスクトップ アプリの場合、プログラムがクラッシュしたときに GUI でスタックトレースを確認すると便利です。これを Java で実装するには、System.err を独自のエラー ハンドラーに置き換え、すべてのエラー メッセージを GUI コンポーネントとテキスト ファイルにリダイレクトします。

問題:世の中にはかなりの数のライブラリがあります (例:Apache POI) は、クラッシュが発生したときに System.err に書き込むだけでなく、簡単な警告メッセージも出力します。これにより、クラッシュ ウィンドウが不必要に表示されます。そこで私の質問は、(1) プログラムがクラッシュしたときにスタックトレースを表示し、(2) 警告メッセージの場合にはスタックトレースを表示しない方法を知っている人はいますか?

[編集] 私のGUIはSWTで書かれています。

役に立ちましたか?

解決

独自の例外ハンドラーをインストールできます。ここでは、Swing のテクニックの 1 つを説明します。 http://ruben42.wordpress.com/2009/03/30/catching-all-runtime-Exceptions-in-swing/. 。エリック・バークもいる このトピックに関する素晴らしい記事. 。もう 1 つの一般的なテクニックは、 Thread.setDefaultUncaughtExceptionHandler, 、例外によりスレッドが終了したときに呼び出されます (最初に参照された記事のコメントによると、Swing スレッドは終了しないため、キャッチされない例外ハンドラーの設定は Swing では機能しませんが、Eric の記事ではこの手法が使用されています)。

例外ハンドラーは、標準出力/エラー ストリームを使用する他のコードを気にせずに、エラーを表示したり、ログに記録したり、必要なことを何でも行うことができます。

他のヒント

私はあなたが間違った角度から問題に近づいていると思います。 System.errに出力がないときだけ、例外がある場合は、ダイアログをポップアップする必要があります。 System.errには、より多くのロギングユーティリティのようなものです。

は、すべてのチェック例外のために、あなたのコード内のケースでそれらのケースを処理する必要があります。どちらか、ダイアログをポップアップしてログインするか、またはそれらを無視(その場合には、それがそうするように本当に安全だということを確認してください)。

ます。http:// WWW

残りの未チェックの例外をキャッチするには、このような何かを行うことができます.javaspecialists.eu /アーカイブ/ Issue081.html に、あなたがそれらを取得していることを確認する。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top