2009-08-28 6 views
10

Gibt es ein Pragma oder Debugger-Attribut, das den Debugger nicht auf das Werfen einer bestimmten Ausnahme brechen lassen, obwohl unter dem Menü Debug >> Ausnahmen habe ich es zu brechen, wenn CLR Exceptions geworfen werden?Irgendeine Möglichkeit in Visual Studio, beim Auslösen einer bestimmten Ausnahme nicht zu brechen?

Im Allgemeinen möchte ich beim Debuggen Ausnahmen zulassen, damit ich sie sofort untersuchen kann. Manchmal gibt es vereinzelte Fälle, in denen bekannt ist, dass dieser Codeblock gelegentlich Ausnahmen auslöst und ich ihn mit einem try-catch behandelt habe. Siehe the answer to this question, wo der Konsens war, dass Try-Catch die korrekteste Situation ist.

Ich möchte in der Lage sein, ein Attribut für die Methode (etwas analog zu System.Diagnostics.DebuggerHiddenAttribute) zu setzen, die alle in der Methode geworfenen Ausnahmen ignoriert.

BTW, ich erfahre dies derzeit in Visual Studio 2008, aber ich vermute, es gibt entweder eine Antwort für alle Versionen oder keine.

Antwort

9

Die direkte Antwort finden Sie im Menü "Ausnahmen" des Debug-Menüs. Dies ist eine pro Lösung/Projekteinstellung. (Tools> Option> Debuggen ist eine systemweite Einstellung.) Weitere Informationen finden Sie im Hilfethema Visual Studio-Debugger, Vorgehensweise: Brechen, wenn eine Ausnahme ausgelöst wird um http://msdn.microsoft.com/en-us/library/d14azbfh.aspx. Im Dialogfeld Ausnahmen können Sie festlegen, welche Ausnahmen ausgelöst werden oder welche Ausnahmen in den Debugger einbrechen.

Ich finde, ich bekomme mehr aus dem DebuggerStepThrough Attribut.

Im Allgemeinen lasse ich das Auslösen von Exceptions zum Standard (Debug> Exceptions user-unhandled checked und Throwed unchecked) und füge das DebuggerStepThrough Attribut für Methoden hinzu, bei denen ich nicht interessiert bin und keine Ausnahmen ausgelöst werden innerhalb dieser Methode. Ich verwende selten DebuggerHidden, und bekomme mehr Verwendung mit DebuggerNonUserCode im Bibliothekscode.

+0

'Debug' >>' Exceptions' ist eigentlich das Menü, in dem ich es aktiviert habe (Tools war ein Tippfehler). Ich möchte alle Ausnahmen außer dieser bestimmten Instanz einer Ausnahme (z. B. 'IOException' oder eine andere häufige Ausnahme, so dass ich nicht alle deaktivieren kann) brechen. Es sieht aus wie DebuggerStepThroughAttribute ist die Antwort, die ich suchte. Ich dachte nicht, dass es auch Ausnahmen beeinflussen würde. Vielen Dank! – mckamey

+1

Zusätzliche Information: DebuggerStepThrough unterdrückt nur Ausnahmen, die direkt in dieser Methode ausgelöst werden. Es unterdrückt keine Ausnahme, die im Call-Stack niedriger ausgelöst wird. –

+0

Ich weiß nicht, ob sich die Dinge in letzter Zeit geändert haben (in VS2015, vielleicht?) - aber ich habe eine Ausnahme, die in meiner Methode abgefangen und behandelt wird, und keine Ausnahme wird erneut ausgelöst - die Methode hat das 'DebuggerStepThrough' Attribut, aber es hört immer noch auf - (obwohl eine Stufe höher im Stapel) - wenn ich F10 drücke, geht es wie normal zur nächsten Zeile - aber warum zum Teufel hält es dort an? Die Methode hat nichts neu gestartet, aber DebuggerStepThrough benimmt sich so, als ob es durchgebrannt wäre ... - Ich könnte einige der anderen erwähnten Attribute ausprobieren. – BrainSlugs83

Verwandte Themen