2008-09-22 13 views
112

Ich möchte, dass Visual Studio bricht, wenn eine behandelte Ausnahme passiert (d. H. Ich möchte nicht nur eine "Erste Chance" -Nachricht sehen, sondern die aktuelle Ausnahme debuggen).Visual Studio: Wie behandelte Ausnahmen behandelt werden?

z.B. Ich möchte der Debugger an der Ausnahme brechen:

try 
{ 
    System.IO.File.Delete(someFilename); 
} 
catch (Exception) 
{ 
    //we really don't care at runtime if the file couldn't be deleted 
} 

ich über these Noten für Visual Studio.NET kam:

1) In VS.NET im Debug-Menü gehen >> „Ausnahmen ...“>> "Common Language Runtime Ausnahmen" >> "System" und wählen "System.NullReferenceException"

2) im unteren Teil dieses Dialogs dort ist ein "Wenn die Ausnahme ausgelöst:" Gruppenfeld, wählen Sie "In den Debugger einbrechen"

3) Führen Sie Ihr Szenario aus. Wenn die Ausnahme ausgelöst wird, wird der Debugger stoppen und informieren Sie mit einem Dialog, dass sagt so etwas wie: „hat geworfen [Pause] [Weiter]‚ ‘eine Ausnahme vom Typ“ System.NullReferenceException

Hit [Pause]. Dies bringt Sie auf die Codezeile, die das Problem verursacht.

Aber sie gelten nicht für Visual Studio 2005 (es gibt keine Ausnahmen Option auf dem Debug Menü).

Weiß jemand, wo die diese Optionen-Dialog in Visual Studio, dass die „Wenn die Ausnahme geworfen wird“ finden Gruppenfeld mit der Option „Pause in den Debugger“?

Update: Das Problem war, dass meine Debug Menü keine Ausnahmen Artikel hatte. Ich habe das Menü angepasst, um es manuell hinzuzufügen.

+5

In VS2015 war es unter Debug-> Windows-> Exception Einstellungen – PeterVermont

Antwort

127

Mit einer Lösung offen, auf die Debug - Ausnahmen (Ctrl +D, E) Menüoption. Von dort aus können Sie auswählen, ob Ausnahmen ausgelöst oder nicht behandelt werden sollen.

EDIT: Meine Instanz ist mit dem C# "Profil" eingerichtet, vielleicht ist es nicht für andere Profile da?

+6

i habe einfach keine solche Option. Das würde meine Verwirrung erklären. –

+1

Vermissen Sie das Debug-Menü insgesamt? –

+26

Ich hatte das Debug-Menü, aber keine Ausnahmen Optionen. Ich habe das Menü angepasst, um es manuell hinzuzufügen; Die Tastenkombination funktioniert in beiden Richtungen (Strg + Alt + E) –

32

Es gibt ein Fenster 'Ausnahmen' in VS2005 ... versuchen Ctrl +Alt + E beim Debuggen und klicken Sie auf 'Thrown' Checkbox für die Ausnahme, die Sie stoppen möchten. gehen

+0

, dass genau das, was ich will. Wo ist das in der Speisekarte? Für das Leben von mir kann ich es nicht finden. –

+0

Die Tastenkombination kann sich je nach Profil ändern (C# -Entwickler, C++ - Entwickler usw.) –

+1

Ich habe einen Menüpunkt: Debug -> Exceptions. Dies ist mit VS2005 Professional. Führen Sie eine Express-Edition aus? –

5

Überprüfen Sie this out auf msdn, es erläutert, wie Sie dies einrichten.

Im Wesentlichen sind hier die Schritte (während des Debuggens):

  1. Auf dem Menü Debuggen auf Ausnahmen.

  2. Wählen Sie im Dialogfeld Ausnahmen die Option Geworfen für eine gesamte Kategorie von Ausnahmen aus, z. B. Common Language Runtime-Ausnahmen.

    -oder

    Erweitern Sie den Knoten für eine Kategorie von Ausnahmen, zum Beispiel Common Language Runtime Ausnahmen, und innerhalb dieser Kategorie für eine bestimmte Ausnahme ausgelöst wählen.

2

Eine Technik, die ich verwende, ist etwas wie das Folgende. Definieren Sie eine globale Variable, die Sie für einen oder mehrere try catch-Blöcke je nach verwenden können, was Sie zu debuggen versuchen, und verwenden Sie die folgende Struktur:

if(!GlobalTestingBool) 
{ 
    try 
    { 
     SomeErrorProneMethod(); 
    } 
    catch (...) 
    { 
     // ... Error handling ... 
    } 
} 
else 
{ 
    SomeErrorProneMethod(); 
} 

finde ich diese gibt mir ein bisschen mehr Flexibilität in Bezug auf Test Da es noch einige Ausnahmen gibt, möchte ich nicht, dass die IDE bricht.

+2

Dies ist eine nützliche Technik - es verwandelt die behandelte Ausnahme in eine unbehandelte Ausnahme, so dass der Debugger automatisch stoppt. Ich bin nicht sicher, warum es heruntergeregelt wurde, es sei denn, es gibt keine gute Möglichkeit, Ihr GlobalTestingBool einzustellen. Eine andere, möglicherweise bessere Option ist die Verwendung von Debugger.IsAttached. –

+0

Sie müssten dies bei jedem try/catch hinzufügen und Ihren Code neu kompilieren. Nicht sehr nützlich, wenn Sie bereits mitten in der Fehlersuche sind. – Max

0

Die Online-Dokumentation scheint ein wenig unklar, also habe ich nur einen kleinen Test durchgeführt. Wenn Sie im Dialogfeld "Ausnahmen" die Option "Ausgelöst" wählen, wird die Programmausführung bei jeder Ausnahmebedingung unterbrochen, behandelt oder nicht behandelt. Wenn Sie nur behandelte Ausnahmen bearbeiten möchten, scheint es, als ob Sie nur Ihren Code durchgehen und Haltepunkte für alle von Ihnen behandelten Ausnahmen setzen müssen. Dies scheint ein wenig übertrieben, daher ist es möglicherweise besser, eine Debug-Anweisung hinzuzufügen, wenn Sie eine Ausnahme behandeln. Wenn Sie dann diese Ausgabe sehen, können Sie einen Haltepunkt an dieser Zeile im Code festlegen.

5

Ich brauchte eine Weile, um den neuen Ort für die Einstellungen zu finden, daher eine neue Antwort.

Seit Visual Studio 2015 steuern Sie, welche Ausnahmen im Fenster für die Ausnahmeeinstellungen (Debug-> Windows-> Exception-Einstellungen) gestoppt werden sollen.

Die einfachste Möglichkeit, benutzerdefinierte Ausnahmen zu behandeln, ist die Auswahl "alle Ausnahmen, die nicht in dieser Liste enthalten sind".

1

von Visual Studio 2015 und weiter, müssen Sie die "Exception Settings" gehen (Ctrl + Alt + E) und die "Common Language Runtime Ausnahmen" abhaken (oder einen spezifischen Sie wollen zB ArgumentNullException), um es zu brechen behandelt Ausnahmen.

Schritt 1 Step 1 Schritt 2 Step 2

Verwandte Themen