Stack Overflowのこのトピックにはかなり良いスレッドがいくつかありますが、いずれの場合でも簡潔な答えはないようです。私のC#コンソールアプリケーション(Windowsサービスとして実行中)はJavaプロセスを起動し、それを管理(起動/停止/再起動)しますが、私の問題はマシンにリモート接続され、約20のJavaプロセスが開始されることです。C#.NETですべてのクラッシュをキャッチ
これは明らかに私のアプリケーションがある時点でクラッシュし、起動したJavaプロセスをシャットダウンしないという問題です。私はAppDomain.CurrentDomainに "UnhandledExceptionEventHandler"をフックし、TerminateProcess()を呼び出して(アクティブなJavaプロセスをシャットダウンします)、この問題はまだ発生しています。
私のアプリケーションには、メインスレッド、TCPサーバースレッド(非同期接続を受け付ける)、およびUDPサーバースレッドがあります。 UnhandledExceptionの上にフックする必要があるものはありますか?
また、ちょうど私は単に私が見たことがないこれは、コンソールへの書き込み私のコードでは、いくつかのtry/catchブロックを持っていることを私に発生した
EDIT。私はこれらを削除してUnhandledExceptionに捕まえるか、代わりにそこにロガーを追加する必要がありますか?
これはa)Winformsアプリ、b)WPFアプリ、c)コンソールアプリ、d)ASP.NETウェブアプリですか?例外処理(「グローバル」スコープ上)は、これらのタイプ間でかなり異なっています。つまり、どちらが重要かを知ることです。 –
Re:あなたの編集 - 一般的なアドバイスは次のとおりです。例外から回復できない場合は、それをバブルアップするか、ログに記録して再スローします。例外を飲み込まないで、実際には例外を処理しないcatchブロックは書き込まないでください。 –
コンソールアプリケーションがサービスとして実行されています。申し訳ありません。 –