Wie behandeln ohne Ausnahme mit try catch?
using (SqlConnection con = new SqlConnection())
{
try
{
con.Open();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Diese funktioniert einwandfrei. Aber ich möchte wissen, können wir damit umgehen ohne Ausnahme mit try catch
wie irgendeine Sache if else
? oder ist es mendetory zu verwenden try catch
Holterman: diese Frage ist wirklich schlimm, dass man es -ve-Abstimmung? auf der Suche nach alternativen ist schlecht?
Ich Stimme dir zu... Es ist ein großes problem, mit niemand in der Lage zu Fragen, Theorie -, Strategie-oder performance-Fragen auf stack overflow. Ich Neige dazu, Sie zu Fragen, Programmierer, statt jetzt, wo Sie besser erhalten.
Ich glaube nicht, dass die nach unten Stimmen werden ganz fair über diese Frage. Es ist eine vollkommen legitime Frage.
Ich Stimme dir zu... Es ist ein großes problem, mit niemand in der Lage zu Fragen, Theorie -, Strategie-oder performance-Fragen auf stack overflow. Ich Neige dazu, Sie zu Fragen, Programmierer, statt jetzt, wo Sie besser erhalten.
Ich glaube nicht, dass die nach unten Stimmen werden ganz fair über diese Frage. Es ist eine vollkommen legitime Frage.
InformationsquelleAutor jams | 2012-04-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es gibt keinen anderen Mechanismus, um eine Ausnahme behandeln andere als zu versuchen zu fangen. Es klingt wie Sie wollen, so etwas wie
aber, der nicht existiert.
InformationsquelleAutor Tejs
Nur so ist zu prüfen, für alle die Bedingungen erfüllen, wird ein Fehler zurückgegeben. Sie sollten dies tun sowieso. Try/catch ist teuer. Try catch sollte das Letzte Mittel sein und es gibt keinen Weg, um es für diesen Zweck.
Verwenden von try/catch kann beeinflussen, compiler-Optimierung und was Programmierer würde mit try/catch über tun, etwas so einfaches wie die überprüfung auf null. Es ist nur eine schlechte Praxis. Abfangen einer Ausnahme wird immer langsamer sein, als bei einem einfachen check. Ich sage nicht, tun Sie aber nicht verwenden Sie statt der defensiven Programmierung.
Recht, guter Punkt! +1, Sie haben es sich verdient.
Try/Catch sind teuer, da bauen Sie die Ausnahme. Fragt der Kunde zum Kauf der neuesten Titan-server ist nur eine schlechte Idee. Die meisten der Zeit, ist es besser, nicht zu verwenden, während einige nicht geholfen werden kann. Es ist viel einfacher, zum testen ein Integer-Wert als die anderen bauen, Klasse Kette und ein Bericht.
InformationsquelleAutor KingOfHypocrites
Die beste alternative, die ich Ihnen geben kann, ist Elmah. http://code.google.com/p/elmah/
Es wird sich um alle Ihre nicht erfasste Fehler und melden diese. Von dort aus würde ich vorschlagen, die Festsetzung sagte Fehler oder fangen die spezifischen Fehler, die Sie erwarten, und das nicht nur, Fehler abzufangen, die möglicherweise auftreten. Dies ist am besten zu tun, so können Sie beheben Probleme und können nicht einfach übersprungen code, da eine Ausnahme aufgetreten ist.
InformationsquelleAutor John Sykor
ok, Sie kann die Umsetzung de Application_Error in der globalen.asax, diese Methode ist die erste Linie der Verteidigung für die Fehler-und ist für alle Anwendung
http://msdn.microsoft.com/en-us/library/24395wz3%28v=vs.100%29.aspx
für spezielle Seite zum Beispiel Standard.aspx, können Sie die Umsetzung Ereignis page_error
http://msdn.microsoft.com/en-us/library/ed577840%28v=vs.100%29.aspx
wenn Sie in der mvc, so können Sie die Umsetzung der OnException(ExceptionContext filterContext) in jeden controller, den Sie wollen, diese Methode aufgerufen wird, wenn eine unbehandelte Ausnahme Auftritt.
http://devproconnections.com/aspnet-mvc/aspnet-mvc-tutorial-handling-errors-and-exceptions
oder Sie können die Umsetzung Ihrer Fehler atribute
https://www.simple-talk.com/dotnet/asp.net/handling-errors-effectively-in-asp.net-mvc/
Für die andere hand, vielleicht können Sie die Assert-Anweisung, mit diesem können Sie auswerten einer Bedingung
http://msdn.microsoft.com/en-us/library/ttcc4x86.aspx
InformationsquelleAutor Fermin Pitol
Tejs' Antwort ist korrekt, ich glaube es gibt keinen anderen Mechanismus, um Fehler zu behandeln.
Können Sie jedoch behandeln spezifischere Fehler. Sie können auch deklarieren von Variablen außerhalb des try-catch um zu sehen, ob es erfolgreich.
Beispiel:
Ihre messagebox könnte gehen Sie nach rechts in die catch-Anweisung. Nur mehr code, um das gleiche zu tun.
Ich bin einfach zu illustrieren Konzepte - das ist kein code, den Sie verwenden. Als KingOfHypocrites sagte, kann man die messagebox in der catch-Anweisung. Aber es gibt weit komplexere Dinge, die Sie konnte nicht einfach in der catch-Anweisung.
InformationsquelleAutor Scen
Den oben genannten Antworten sind richtig. Aber eine weitere Sache zu beachten ist, dass es möglich ist das einrichten einen globalen exception-handler. Dies löst nicht die Notwendigkeit für defensive coding wie bereits erwähnt. Wenn es allerdings zu Bedenken, dass alle Ausnahmen behandelt werden müssen (Z. B. zum protokollieren der Fehler), dann kann dieser Ansatz sehr hilfreich sein.
InformationsquelleAutor CosmicFreddy
Ich Baue ein system, das Echtzeit-streaming-Daten, und muss daher, um Fehler zu behandeln, die auftreten könnten, wenn alles andere ist ziemlich viel Leerlauf. Die API die ich verwende geht der Fehler durch das Programm, wenn eine Methode mit dem Namen "Fehler", mit der Ausnahme angebracht. Diese Methode könnte dann werfen Sie den Fehler, aber das ist problematisch, denn ich kann nicht sehen, wie die Umsetzung meiner ganze Programm vollständig innerhalb eines try-catch-block ist eine gute Idee.
So, um zu bekommen, richte ich ein Ereignis-handler für das Ereignis ausgelöst in den wichtigsten Teil meines Programms, die können dann befassen sich mit was auch immer Fehler geworfen erhält an diesem Punkt in der Zeit.
Beispiel:
In der main-Klasse:
(In der Klasse, erhält den API-Fehler):
InformationsquelleAutor Steven C. Britton