7 Stimmen

Wie kann man Ausnahmen behandeln, ohne try catch zu verwenden?

using (SqlConnection con = new SqlConnection())
{
     try
     {
          con.Open();
     }
     catch (Exception ex)
     {
          MessageBox.Show(ex.Message);
     }
}

Das funktioniert gut. Aber ich möchte wissen, können wir behandeln Ausnahme ohne Verwendung try catch wie irgendetwas if else ? Oder ist es mendetory zu verwenden try catch .

6voto

Tejs Punkte 39916

Es gibt keinen anderen Mechanismus zur Behandlung einer Ausnahme als try catch. Es hört sich so an, als ob Sie etwas wollen wie

if(connection.DidAnErrorOccur)

aber das gibt es nicht.

4voto

Fermin Pitol Punkte 464

Ok, Sie können die Application_Error in der global.asax Diese Methode ist die erste Verteidigungslinie für die Fehler und ist für alle die Anwendung

http://msdn.microsoft.com/en-us/library/24395wz3%28v=vs.100%29.aspx

für eine bestimmte Seite, z. B. default.aspx, können Sie Folgendes implementieren Seite_Fehler

http://msdn.microsoft.com/en-us/library/ed577840%28v=vs.100%29.aspx

wenn Sie in mvc arbeiten, so können Sie die OnException(ExceptionContext filterContext) in jedem gewünschten Controller, wird diese Methode aufgerufen, wenn eine unbehandelte Ausnahme auftritt.

http://devproconnections.com/aspnet-mvc/aspnet-mvc-tutorial-handling-errors-and-exceptions

oder Sie können Ihre Fehlerattribut

https://www.simple-talk.com/dotnet/asp.net/handling-errors-effectively-in-asp.net-mvc/

Für eine andere Hand können Sie vielleicht die Assert-Anweisung Damit können Sie eine Bedingung auswerten

http://msdn.microsoft.com/en-us/library/ttcc4x86.aspx

3voto

KingOfHypocrites Punkte 9047

Die einzige Möglichkeit besteht darin, alle Bedingungen zu prüfen, die einen Fehler ergeben würden. Dies sollten Sie ohnehin tun. Try/Catch ist teuer. Try/Catch sollte der letzte Ausweg sein, und für diesen Zweck gibt es keine Möglichkeit, es zu umgehen.

2voto

John Sykor Punkte 717

Die beste Alternative, die ich Ihnen nennen kann, ist Elmah. http://code.google.com/p/elmah/ Es behandelt alle nicht abgefangenen Fehler und protokolliert sie. Von dort aus würde ich vorschlagen, diese Fehler zu beheben oder die spezifischen Fehler abzufangen, die Sie erwarten, und nicht einfach jeden Fehler abzufangen, der auftreten könnte. Dies ist am besten zu tun, so können Sie potenzielle Probleme zu beheben und nicht einfach über Code überspringen, weil eine Ausnahme aufgetreten ist.

1voto

Scen Punkte 1650

Die Antwort von Tejs ist richtig, ich glaube, es gibt keinen anderen Mechanismus zur Fehlerbehandlung.

Sie können jedoch auch spezifischere Fehler behandeln. Sie können auch Variablen außerhalb von try catch deklarieren, um zu sehen, ob es erfolgreich war.

Beispiel:

using (SqlConnection con = new SqlConnection())
{
     bool sqlErrorOccurred;

     try
     {
         con.Open();
         sqlErrorOccurred = false;
     }
     catch (SqlException ex)
     {
          sqlErrorOccurred = true;
     }

     if(sqlErrorOccurred)
     {
         MessageBox.Show("A Sql Exception Occurred");
     }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X