So erhalten Sie den Typ der Ausnahme in C #

7

Ich möchte überprüfen, ob der Server nicht erreichbar ist, und wenn er nicht erreichbar ist, möchte ich eine freundliche Nachricht auf meiner Anmeldeseite drucken. Wie wenn der Benutzer seinen Berechtigungsnachweis eingibt und in Ausnahmefall

  

Beim Herstellen einer Verbindung mit SQL Server ist ein netzwerkbezogener oder instanzspezifischer Fehler aufgetreten. Der Server wurde nicht gefunden oder war nicht erreichbar. Stellen Sie sicher, dass der Instanzname korrekt ist und dass SQL Server so konfiguriert ist, dass Remoteverbindungen zugelassen werden. (Anbieter: Named Pipes Provider, Fehler: 40 - Verbindung zu SQL Server konnte nicht hergestellt werden)

diese Ausnahme. Also wie soll ich wann welche Ausnahme aufgetreten ist, damit ich eine Nachricht anzeigen kann?

    
Fraz Sundal 15.09.2010, 07:03
quelle

8 Antworten

7

Sie können versuchen, eine SQLException abzufangen:

%Vor%     
Darin Dimitrov 15.09.2010, 07:05
quelle
16

Ich weiß, dass dies ein älterer Post ist, aber wenn Sie alle Ausnahmen auf die gleiche Weise behandeln und / oder die Informationen für Fehlerberichte oder etwas Ähnliches verwenden (anstatt den Benutzer über die Besonderheiten zu informieren), können Sie das verwenden folgend.

%Vor%     
John D Kidd Jr 28.09.2014 14:32
quelle
12

Sie müssen zur Codezeit wissen, welche Ausnahmen zu erwarten sind, um sie entsprechend zu erfassen. Wie Dimitrov sagte, wird eine SQLException ausgelöst, wenn die Verbindung zu einem SQL-Server fehlschlägt. Es ist also eine gute Taktik, das zu fangen.

Sie möchten die verschiedenen Ausnahmen der Reihe nach abfangen:

%Vor%

Versuchen Sie, die ungewöhnlichsten Ausnahmen an die Spitze zu setzen, indem Sie sich in der Liste nach den üblicheren abarbeiten. Die Catch-Sequenz ist sequentiell - wenn Sie catch (Exception) an die Spitze setzen, fängt sie immer in dieser Zeile auf, egal welche Exceptions Sie darunter codieren.

    
Johan Strömhielm 15.09.2010 07:19
quelle
6

Sie können dieselbe Methode verwenden, die Sie verwenden, um zu überprüfen, ob eine Elternklasse vom Typ Unterklasse ist, die mit

erledigt wird %Vor%

wo Ihr obj vom Typ Exception die Elternklasse aller Ausnahmen ist.

oder wenn Sie das Ausnahmeobjekt später verwenden möchten, können Sie Folgendes verwenden:

%Vor%

Diese Logik ist besonders nützlich, wenn Sie über eine zentralisierte Klasse zum Behandeln von Ausnahmen verfügen und nicht mehrere Fanganweisungen hinzufügen möchten

Hoffe, das hilft.

    
Baz1nga 15.09.2010 08:13
quelle
2
%Vor%

try/finally und using sind fast identisch. using versucht, etwas mit dem Objekt zu tun, ob es erfolgreich ist oder nicht, es wird das Objekt beseitigen, um den Speicherleck zu stoppen, wird aber den Fehler nicht ignorieren, der verhindert, dass der Code fortgesetzt wird.

Try werden versuchen, den Code innerhalb der geschweiften Klammern auszuführen, wenn ein Fehler auftritt, wird es den Fehler ignorieren und die Try Klausel beenden, dann gehen Sie Code auf das Lesen, wenn der Fehler nicht kritisch ist, die das Programm zum Absturz bringt . Allerdings, wenn using strömt es sicherzustellen, wird nicht der Strom geschlossen / entsorgen, denn wenn ein Fehler auftritt es das try Klausel beendet, bevor sie eine Code erreichen Sie am unteren Rande hinzugefügt von könnten für die Entsorgung (schlechte Praxis imo).

Try code erfordert entweder ein Catch (s) und / oder Finally statment. Catch gibt Ihnen die Möglichkeit, Ausnahmen generell oder bestimmte Ausnahmen zu behandeln. Ein Anwendungsbeispiel könnte sein, eine Textdatei des Fehlers zu erzeugen und zu speichern. Mit using können Sie keine Ausnahmen behandeln.

Ein anderes Beispiel von using könnte sein, Sie haben eine Playlist, ein Song kann nicht gefunden werden, der Ausnahmebereich nullreferece könnte das Objekt aus der Liste entfernen.

Finally wird immer dann ausgeführt, auch wenn der Fehler ist von entscheidenden Bedeutung, und das Programm abstürzt, wird der Code innerhalb des finally -Klausel ausgeführt werden, mit Strom-Objekten das ist, wo sollten Sie Ihren dispose Code platzieren, so dass, wenn Das Objekt schlägt in der try -Klausel fehl, die immer entsorgt wird.

Ich hoffe, ich habe dazu beigetragen, Klarheit in Bezug auf die Verwendung von try / catch / finally .

zu schaffen     
Gorlykio 23.12.2012 02:49
quelle
0

Sie müssen die Ausnahme abfangen:

%Vor%     
Oskar Kjellin 15.09.2010 07:06
quelle
0
%Vor%     
Shekhar 15.09.2010 07:46
quelle
-1

Ich denke, Lösung ist ..

catch (Ausnahme ex) {     Response.Write ("Ein Fehler ist aufgetreten:" + ex.Message); }

    
parmarupendra 15.09.2010 07:42
quelle

Tags und Links