Ich möchte, dass Visual Studio unterbrochen wird, wenn eine behandelte Ausnahme auftritt (dh ich möchte nicht nur eine Meldung "Erste Chance" sehen, sondern die eigentliche Ausnahme debuggen).
zB möchte ich, dass der Debugger bei der Ausnahme kaputt geht:
try
{
System.IO.File.Delete(someFilename);
}
catch (Exception)
{
//we really don't care at runtime if the file couldn't be deleted
}
Ich bin auf diese Hinweise für Visual Studio.NET gestoßen:
1) Gehen Sie in VS.NET zum Debug-Menü >> "Ausnahmen ..." >> "Common Language Runtime Exceptions" >> "System" und wählen Sie "System.NullReferenceException".
2) Im unteren Bereich dieses Dialogfelds befindet sich das Gruppenfeld "Wenn die Ausnahme ausgelöst wird:". Wählen Sie "In den Debugger einbrechen".
3) Führen Sie Ihr Szenario aus. Wenn die Ausnahme ausgelöst wird, stoppt der Debugger und benachrichtigt Sie mit einem Dialogfeld, das etwa Folgendes sagt: "Eine Ausnahme vom Typ" System.NullReferenceException "wurde ausgelöst. [Break] [Continue]"
Drücke [Pause]. Dadurch gelangen Sie in die Codezeile, die das Problem verursacht.
Sie gelten jedoch nicht für Visual Studio 2005 ( im Menü Debug gibt es keine Option für Ausnahmen ).
Weiß jemand, wo das Dialogfeld "Diese Optionen suchen" in Visual Studio das Gruppenfeld " Wenn die Ausnahme ausgelöst wird " mit der Option " In den Debugger einbrechen " enthält?
Update: Das Problem war, dass mein Debug- Menü kein Ausnahmeelement enthielt . Ich habe das Menü angepasst, um es manuell hinzuzufügen.
quelle
Antworten:
Wechseln Sie bei geöffneter Lösung zur Menüoption Debug - Ausnahmen ( Ctrl+ D, E). Von dort aus können Sie wählen , auf brechen Geworfen oder Benutzer nicht behandelte Ausnahmen.
BEARBEITEN: Meine Instanz ist mit dem C # "Profil" eingerichtet. Vielleicht ist sie nicht für andere Profile vorhanden?
quelle
Common Language Runtime Exceptions
><All Common Language Runtime Exceptions not in this list>
unter Visual Studio 2017 ausgewählt und alle meine wildesten Träume wurden wahr.Es gibt eine ‚Ausnahmen‘ Fenster in VS2005 ... versuchen Ctrl+ Alt+ Ebeim Debuggen und klicken Sie auf ‚Thrown‘ Checkbox für die Ausnahme , die Sie stoppen möchten.
quelle
Ich habe eine Weile gebraucht, um den neuen Ort für Erwartungseinstellungen zu finden, daher eine neue Antwort.
Seit Visual Studio 2015 steuern Sie im Fenster "Ausnahmeeinstellungen" (Debug-> Windows-> Ausnahmeeinstellungen), welche Ausnahmen gestoppt werden sollen. Die Verknüpfung ist immer noch Ctrl- Alt- E.
Die einfachste Möglichkeit, benutzerdefinierte Ausnahmen zu behandeln, besteht darin, "Alle Ausnahmen, die nicht in dieser Liste enthalten sind" auszuwählen.
Hier ist ein Screenshot aus der englischen Version:
Hier ist ein Screenshot aus der deutschen Version:
quelle
Ab Visual Studio 2015 müssen Sie im Dialogfeld "Ausnahmeeinstellungen" ( Ctrl+ Alt+ E) die Option "Common Language Runtime Exceptions" (oder eine bestimmte Ausnahme, die Sie möchten) aktivieren
ArgumentNullException
, damit sie bei behandelten Ausnahmen unterbrochen wird .Schritt 1 Schritt 2
quelle
Aktivieren Sie das Kontrollkästchen Ausnahmen auf der Debugger- Seite verwalten. Hier erfahren Sie, wie Sie dies einrichten.
Im Wesentlichen sind hier die Schritte (während des Debuggens):
Klicken Sie im Menü Debuggen auf Ausnahmen.
Wählen Sie im Dialogfeld Ausnahmen die Option Ausgelöst für eine ganze Kategorie von Ausnahmen aus, z. B. Common Language Runtime Exceptions.
-oder-
Erweitern Sie den Knoten für eine Kategorie von Ausnahmen, z. B. Common Language Runtime Exceptions, und wählen Sie Thrown für eine bestimmte Ausnahme innerhalb dieser Kategorie aus.
quelle
Eine Technik, die ich benutze, ist ungefähr die folgende. Definieren Sie eine globale Variable, die Sie für einen oder mehrere Try-Catch-Blöcke verwenden können, je nachdem, was Sie debuggen möchten, und verwenden Sie die folgende Struktur:
Ich finde, das gibt mir ein bisschen mehr Flexibilität beim Testen, da es immer noch einige Ausnahmen gibt, bei denen die IDE nicht unterbrochen werden soll.
quelle
catch(){/*handle or not*/ throw; } // throw without any exception specified will rethrow original exception with original callstack etc
Die Online-Dokumentation scheint etwas unklar zu sein, deshalb habe ich nur einen kleinen Test durchgeführt. Wenn Sie im Dialogfeld " Ausnahmen" die Option " Auf Thrown unterbrechen" auswählen, wird die Programmausführung bei jeder Ausnahme unterbrochen, die behandelt oder nicht behandelt wird. Wenn Sie nur behandelte Ausnahmen unterbrechen möchten, besteht Ihre einzige Möglichkeit darin, Ihren Code durchzugehen und Haltepunkte für alle behandelten Ausnahmen zu setzen. Dies scheint etwas übertrieben zu sein, daher ist es möglicherweise besser, eine Debug-Anweisung hinzuzufügen, wenn Sie eine Ausnahme behandeln. Wenn Sie diese Ausgabe sehen, können Sie einen Haltepunkt an dieser Zeile im Code festlegen.
quelle