Es ist erwähnenswert, dass das Folgende kein Ersatz für eine try .. catch
Logik in sensiblen Bereichen Ihrer Anwendung ist. Das Folgende ist kein Hinweis, die Verwendung von try ... catch
zu stoppen. Das Folgende ist nur ein Weg, um eine unerwartete Ausnahme zu behandeln und eine nützliche Nachricht zu zeigen (und vielleicht eine E-Mail an den Support mit StackTrace zu senden), bevor die Anwendung heruntergefahren wird statt einer hässlichen Windows-Nachricht (Anwendung XYZ funktioniert nicht mehr).
Sie müssen sich für die Behandlung aller nicht behandelten Ausnahmen registrieren (außer denen für Timer und sekundäre Threads). Program.cs
ist ein guter Ort:
static void Main()
{
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
Application.ThreadException += Application_ThreadException;
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
private static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
ShowCustomException(e.Exception);
}
private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
ShowCustomException(e.ExceptionObject as Exception);
}
private static void ShowCustomException(Exception ex)
{
// show your custom exception form
}
Ich konnte nichts finden. – user6553558
Werfen Sie einen Blick hier https://msdn.microsoft.com/de-de/library/ms157905(v=vs.110).aspx Aber das wird nur unbehandelte Ausnahmen in Ihrem Code fangen. Eine unbehandelte Ausnahme ist das Schlimmste, was Ihrer Anwendung passieren kann, da sie normalerweise beendet wird (Absturz). Versuchen Sie, mögliche Ausnahmen in einem 'try catch finally'-Block zu behandeln. –
Haben Sie ein allgemeines Verständnis dafür, wie die Fehlerbehandlung in C# funktioniert? –