2008-09-02 11 views
8

eine Produktionsanwendung Seufzer einen Ausschlag von leeren catch-Blöcke hat Debuggen, dass ich das Debuggen:eine Ausnahme in einem leeren catch-Block

try {*SOME CODE*} 
catch{} 

Gibt es eine Möglichkeit zu sehen, was die Ausnahme, wenn der Debugger ist trifft den Haken in der IDE?

+0

Entschuldigung sollte klarer sein - ich kann den Code nicht ändern - Ich versuche nur einige Fehler zu finden – Rikalous

Antwort

1

Wenn Sie Visual Studio verwenden, gibt es die Möglichkeit, zu brechen, wenn eine Ausnahme ausgelöst wird, unabhängig davon, ob sie nicht behandelt wird oder nicht. Wenn die Ausnahme ausgelöst wird, wird der Ausnahme-Helper (vielleicht nur VS 2005 und höher) Ihnen sagen, welche Art von Ausnahme es ist.

Hit Ctrl +Alt + E die Ausnahme Optionen-Dialog zu bringen, und schalten diese auf.

+0

Dies ist der Mechanismus, den ich verwendet habe - ich konnte keine Möglichkeit finden, die versteckte Ausnahme zu sehen, wie AdamB beschrieben – Rikalous

+0

Obwohl vorsichtig, was Sie wünschen. Wenn Sie dies mit einer MVC-App tun, werden Sie überrascht sein, wie viele Ausnahmen bei jeder Anfrage abgefangen werden. – Casey

0

Können Sie nicht einfach eine Ausnahme an dieser Stelle hinzufügen und überprüfen?

3

In Visual Studio - Debug -> Ausnahmen -> das Kontrollkästchen von "Common Language Runtime Ausnahmen" in der Geworfen Spalte

6

In VS, wenn man sich in dem Lokalbereich Ihrer IDE während im Innern des catch-Block , haben Sie etwas in der Wirkung von $ EXCEPTION, die alle Informationen für die Ausnahme haben wird, die gerade gefangen wurde.

+0

Ich konnte das nirgends sehen – Rikalous

+0

Wo hast du das gesehen? Erweitern Sie die Informationen –

1

Sie können

catch (Exception ex) { } 

Dann schreiben, wenn hier eine Ausnahme geworfen und gefangen Sie ex inspizieren können.

1

Nein, es ist unmöglich, weil dieser Codebaustein sagt: "Ich interessiere mich nicht für die Ausnahme". Sie können eine globale Suche durchführen und sie durch den folgenden Code ersetzen, um die Ausnahme zu sehen.

catch {} 

mit folgenden

catch (Exception exc) { 
#IF DEBUG 
    object o = exc; 
#ENDIF 
} 

Was wird dies tun, halten ist Ihre aktuell nichts tun, fängt für Produktionscode, aber wenn in DEBUG ausgeführt wird er Sie Bruchstellen auf Objekt o setzen.

0

@sectrean

Das funktioniert nicht, weil der Compiler die Exception ex Wert ignoriert, wenn es nichts, um es mit ist.

Verwandte Themen