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?
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%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.
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.
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
.
Ich denke, Lösung ist ..
catch (Ausnahme ex) { Response.Write ("Ein Fehler ist aufgetreten:" + ex.Message); }
Tags und Links c# exception-handling