.NETのWindowsフォームとWPFアプリケーションにグローバルイベントがありますか?ASP.NETの場合はOn_Error - Global.aspxですか?Windowsアプリケーションでエラーが発生しました
答えて
Application.ThreadException
このイベントは、未処理の例外が発生したときに発生します。
私はほとんどこのイベントを購読し、イベントハンドラでは、発生した例外をログに記録するか、何かが間違っていることを示すMessageBoxを表示します。他の人が述べたように
、あなたはこのlinkをチェックし、ユーザーフレンドリーな例外処理にApplication.ThreadException
使用することができます。
AppDomain.CurrentDomain.UnhandledException
次のサンプルプログラムのショーを(すでに他の人が指摘したように)Windows.Forms
ため
Application.ThreadException
:[STAThread] static void Main() { Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); Application.Run(new Form1()); } private void button1_Click(object sender, System.EventArgs e) { throw new Exception("Whoops"); } private static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) { MessageBox.Show(e.Exception.Message); }
私はwpfを使用しているので、main()を取得する方法 –
はい。しかし、あなたがウィンドウズフォームとして言及した質問では。 –
申し訳ありませんが、両方とも同じですが...私はWPFを初めて使っていますが、main()が見つかりませんでした。今私はメイン()を追加する方法を知っているが、becozエラーを取得する私もリソースファイルを持っている –
は、基本的には、世界的にトラップ未処理の例外への2つのオプションがありますC#でUnhandledException
イベントを使用する方法:
class Program
{
static void Main(string[] args)
{
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
}
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Exception ex = (Exception)e.ExceptionObject;
Console.WriteLine("Unhandled exception!!");
Console.WriteLine(ex.InnerException.Message);
}
}
Application.ThreadExceptionに加えて、AppDomain.CurrentDoman.UnhandledExceptionを処理する必要があります。追加するように編集
Application.ThreadException += new ThreadExceptionEventHandler(AppExceptionHandler.Application_ThreadException);
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(AppExceptionHandler.CurrentDomain_UnhandledException);
:私のProgram.csファイルのいずれかから関連するスニペットは次のようになります ここでさらに説明good articleです。
ASP.NETとWinFormsのアプリケーションの両方について、AppDomainのUnhandledExceptionイベントがあります:
Private Sub UnhandledException(ByVal sender As Object, ByVal e As System.UnhandledExceptionEventArgs)
Console.WriteLine(vbCrLf & "Unhandled exception:" & vbCrLf & e.ExceptionObject.ToString)
End Sub
ご注意:
AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf UnhandledException
このハンドラでは、あなたが必要な任意のカスタムロギング/リカバリを実行することができますあなたはではありません。この場合は例外をキャッチまたは処理しています。通知イベントのみを受信しています。イベントハンドラでアプリケーションを終了しない限り、例外は上位レベルのフォールトハンドラに伝播されます。これはWinFormsのアプリケーションは通常オペレーティングシステムにあり、「このアプリケーションには...」というクラッシュダイアログが表示されます。
- 1. Windows Phone 8.1アプリケーションでSQLiteデータベースに接続中にエラーが発生しました
- 2. WindowsアプリケーションでWebsocketに問題が発生しました。
- 3. Windowsサービスで予期しないエラーが発生しました
- 4. Windows 7でCompassポーリングでエラーが発生しました
- 5. Windowsでメークファイルエラーが発生しました
- 6. Windowsサービスでsystem.configuration.settingspropertynotfoundedeceptionエラーが発生しました
- 7. Windowsのコマンドプロンプトでnpm installコマンドのエラーが発生しました
- 8. WindowsでPyOpenGL glClearColorエラーが発生しました。
- 9. ONBUILDオプションでエラーが発生しました(WindowsのDockerツールボックス)
- 10. VS2005のWindowsサービスへのインストールでエラーが発生しました
- 11. Windows XPでPython Cx_Freezeエラーが発生しました
- 12. WindowsでSparkを実行中にエラーが発生しました
- 13. WindowsでTheanoをインポート中にエラーが発生しました
- 14. Windows内でRequest.Formエラーが発生しました。ユニバーサルWebView
- 15. Windowsの電子リビルドシリアルポートでエラーが発生しました
- 16. Windows上のPython暗号でエラーが発生しました
- 17. WindowsでWebパッケージをインポート中にエラーが発生しました
- 18. Windowsの再帰的削除でエラーが発生しました
- 19. Windowsで奇妙なエラーが発生しました。
- 20. Windows 10にSideload LOBアプリケーションを展開中にエラーが発生しました
- 21. Hashtable for Windows電話アプリケーションの使用中にエラーが発生しました
- 22. エラー:アプリケーションを起動中にエラーが発生しました
- 23. アプリケーションを終了した後にエラーが発生しました
- 24. iosのPhonegapアプリケーションでエラーが発生しました
- 25. 起動アプリケーションでEXC_BAD_ACCESSエラーが発生しました
- 26. asp.net mvcアプリケーションでエラーが発生しました
- 27. Googleマップのアプリケーションでエラーが発生しました
- 28. Javaアプリケーションでエラーが発生しました
- 29. Springブート/ Javaアプリケーションのエンティティでエラーが発生しました
- 30. Heroku PostgreSQL RailsアプリケーションでGROUP_BYエラーが発生しました
ありがとうございました。 C#のアプリケーションレベルで例外をトレースする方法はありますか。 –