[解決済み】.NET コンソールアプリケーションのグローバル例外ハンドラ
2022-04-17 02:36:34
質問
質問です。コンソールアプリケーションで未処理の例外を処理するためのグローバルな例外ハンドラを定義したいのですが、どうすればよいですか?asp.netでは、global.asaxで定義でき、Windowsアプリケーション/servicesでは、以下のように定義できます。
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyExceptionHandler);
しかし、コンソールアプリケーションのグローバルな例外ハンドラを定義するにはどうすればよいのでしょうか?
currentDomainは動作しないようです(.NET 2.0) ?
編集してください。
あーあ、バカなミスだ。
VB.NETでは、currentDomainの前に"AddHandler"というキーワードを追加しないと、IntelliSenseでUnhandledExceptionイベントが表示されない......ということです。
これは、VB.NETとC#のコンパイラでイベント処理の扱いが異なるからです。
解決するには?
いいえ、その方法が正しいのです。 これは、まさにそのとおりに動作しました。
using System;
class Program {
static void Main(string[] args) {
System.AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionTrapper;
throw new Exception("Kaboom");
}
static void UnhandledExceptionTrapper(object sender, UnhandledExceptionEventArgs e) {
Console.WriteLine(e.ExceptionObject.ToString());
Console.WriteLine("Press Enter to continue");
Console.ReadLine();
Environment.Exit(1);
}
}
この方法では、ジッターによって発生する型やファイルロードの例外をキャッチできないことに留意してください。 これらはMain()メソッドの実行が始まる前に発生します。 これらをキャッチするにはジッターを遅延させ、リスクのあるコードを別のメソッドに移動し、[MethodImpl(MethodImplOptions.NoInlining)]属性をそれに適用する必要があります。
関連
-
[解決済み】GDI+、JPEG画像をMemoryStreamに変換する際にジェネリックエラーが発生しました。
-
[解決済み】文字列が有効な DateTime " format dd/MM/yyyy " として認識されなかった。
-
[解決済み】Visual Studio: 操作を完了できませんでした。パラメータが正しくありません
-
[解決済み】C#のequal to演算子でtextとvarcharのデータ型は互換性がない
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み] .NETでのdecimal, float, doubleの違い?
-
[解決済み] .NETでC#オブジェクトをJSON文字列に変換するには?
-
[解決済み] .NETコンソールアプリケーションでアプリケーションのパスを取得するにはどうすればよいですか?
-
[解決済み] Rubyで「例外 => e」を救済するのはなぜ悪いスタイルなのですか?
-
[解決済み] .NETアプリケーションを強制的に管理者として実行させるにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] 1つ以上のエンティティで検証に失敗しました。詳細は'EntityValidationErrors'プロパティを参照してください [重複]。
-
[解決済み】"出力タイプがクラスライブラリのプロジェクトは直接起動できない"
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み】非静的メソッドはターゲットを必要とする
-
[解決済み】なぜこのコードはInvalidOperationExceptionを投げるのですか?
-
[解決済み】"指定されたパスのフォーマットはサポートされていません。"
-
[解決済み】OnCollisionEnter2Dが実行されない?
-
[解決済み】aspNetCore 2.2.0 - AspNetCoreModuleV2 エラー
-
[解決済み】パラメータ付きRedirectToAction
-
[解決済み】名前 'ViewBag' が現在のコンテキストに存在しない - Visual Studio 2015