Anzeige Ausnahme in der try-catch-Klausel
Bis jetzt, immer wenn ich zeigen wollte, eine Ausnahme von meinem code, den ich verwendet:
try
{
//Code that may throw different exceptions
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
Benutzte ich den oben genannten code, hauptsächlich für debugging-Gründen, um zu sehen, die genaue Art der exception und die nach Grund die exception geworfen wurde.
In ein Projekt, das ich bin zu erstellen, benutze ich verschiedene try-catch
Klauseln, und ich möchte die Anzeige einer popup-Nachricht im Falle eine Ausnahme zu machen, mehr "user-friendly". Durch "Benutzer-freundlich", ich meine eine Nachricht, würde verbergen sich Sätze wie Null-Verweis-Ausnahme oder Argument Out Of Range Exception, die derzeit angezeigt werden mit dem obigen code.
Aber ich immer noch wollen, um zu sehen, alle relevanten Informationen mit dem Typ der Ausnahme, die die Nachricht erstellt wurde.
Gibt es eine Möglichkeit, formatieren Sie die angezeigte Ausgabe der geworfenen Ausnahmen nach vorheriger braucht?
- Sie können anzeigen von jeder Art von Nachricht, die Sie wollen, oder reagieren auf die Ausnahme in einer beliebigen Anzahl von Möglichkeiten, Sie haben die Kontrolle, sobald Sie erwischt habe, die Ausnahme.
- Wenn du gehst, um zu Debuggen, warum nicht einfach einen debugger verwenden? Wenn keine unerwarteten exceptions tritt in der end-Benutzer sind, melden Sie sich einfach und lassen Sie das Programm beendet wird.
- Besser fügen Sie eine Nachricht für jede Ausnahme, statt nur 1..Sie können mehrere catch-Blöcke, und fügen Sie msgbox in jedem. don ' T catch exception direkt
- Ich habe ein problem jetzt...Sie alle mit hilfreichen Antworten, und ich weiß nicht, was man auswählen, wie richtig.. im Grunde ist der Unterschied zwischen ex.toString() und ex.Nachricht, dass fast alle erwähnen, ist das denken, das hilft
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
.Message
, aber ich würde nicht empfehlen nur auf den FangException
direkt. Versuchen Sie fangen mehrere Ausnahmen oder ausdrücklich die Ausnahme und passen Sie die Fehlermeldung an, die den Typ der Ausnahme.Fangen
Exception
ist eher generisch und können als schlechte Praxis, da es vielleicht versteckt bugs in Ihrer Anwendung.Können Sie auch den Typ der Ausnahme prüfen und behandeln es entsprechend durch die überprüfung der Ausnahme-Typ:
Die zeigen, eine Meldung an den Benutzer, wenn die Ausnahme ist eine ArgumentOutOfRange oder FormatException, sonst wird es rethrow die Ausnahme (Und halten Sie die original-stack-trace).
throw;
erneut die Ausnahme.throw;
um zu verbreiten es weiter in der Kette versuchencatch
Klauseln mitArgumentOutOfRangeException
undFormatException
, statt zu schreibenif else
Aussagen in einemcatch
blockException
direkt.Verwenden Sie obigen code.
Können auch benutzerdefinierte Fehlermeldung wie:
Zusätzliche :
Unterschied zwischen ex.toString() und ex.Nachricht Folgen:
Ausnahme.Nachricht vs Ausnahme.ToString()
Alle details mit Beispiel:
http://www.dotnetperls.com/exception
MessageBox.Show(ex.Message);
Exception.Message
bietet eine mehr (aber nicht ganz) user-freundliche Nachricht alsException.ToString()
. Betrachten Sie dieses erfundene Beispiel:Obwohl
Message
ergibt sich eine einfachere Botschaft alsToString()
die Nachricht, die angezeigt wird, noch nicht viel bedeuten, um den Benutzer. Es wird Sie nicht viel Mühe bei der manuell zu schlucken Ausnahmen, und zeigen Sie eine benutzerdefinierte Nachricht an den Benutzer, helfen Ihnen bei der Behebung dieses Problems.Können Sie sogar
Debug.Print
zur Ausgabe von text in das Direktfenster oder das output-Fenster (abhängig von Ihrem VS-Voreinstellungen) für debugging-Zwecke.Können Sie Ausnahme.Nachricht - Eigenschaft eine Nachricht bekommen, dass die die aktuelle Ausnahme beschreibt.
versuchen, diesen code :