2009-05-21 5 views
5

Ich möchte der Designer den Fehler abfangen, wenn ich debuggen bin und ich möchte, dass der Benutzer meine freundliche Nachricht sehen, wenn ein Fehler für sie auftritt. Ich weiß, ich kann diese acomplish mit den folgenden:Gibt es eine bessere Möglichkeit, Visual Studio im Debug-Modus zu versuchen zu ignorieren

#If Debug=False Then 

Try 

#End If 

'some code here 

#If Debug=False Then 

Catch ex as exception 

    Messagebox.Show("Errors suck") 

End Try 

#End If 

Ich will nicht alle #statements zu schreiben haben und mit ihnen meinen Code unübersichtlich. Es scheint, als sollte dies ein gemeinsames Bedürfnis sein und es muss einen besseren Weg geben. Kennt jemand einen besseren Weg?

+0

Haben Sie jemals diese erfolgreich gelöst werden? Brauchst du noch Hilfe dabei? – jcolebrand

Antwort

0

Im Abschnitt Fang Ihres Try..Catch sollten Sie die Ausnahmebedingungsnachricht, Stacktrace und alles, was Sie sonst wünschen, in eine Protokolldatei schreiben - zusätzlich könnten Sie diese Daten auch in das Windows-Ereignisprotokoll schreiben.

Im schlimmsten Fall könnten Sie einfach Breakpoints in den Catch-Bereich Ihrer Try..Catch-Blöcke setzen, da Sie normalerweise nicht darauf treffen sollten, sollte es nach der Einrichtung keine große Sache sein.

15

In VS.NET können Sie sagen, ob der Debugger brechen soll, wenn eine Ausnahme ausgelöst (nicht nur wenn es nicht behandelt wird).

Schauen Sie auf den Debug | Ausnahmen ... Menüpunkt (Ctl-Alt-E auf meinen Tastaturkürzeln). Wählen Sie die Ausnahme aus, die Sie interessiert, und kreuzen Sie dann das "geworfen" -Feld für diese Ausnahme an.

Sie, dass das Feld auf mehreren Ebenen kreuzen können (alle CLR Ausnahmen, alle CLR Ausnahmen in einem bestimmten Namensraum oder ganz bestimmte Ausnahmen)

3

Es gibt keine gute Möglichkeit ist, um es zu bekommen versuchen fangen andere als zu ignorieren, was du hast gemacht. Aber Sie können den Code ein wenig sauberer machen und im Wesentlichen den gleichen Effekt erzielen. Sie versuchen im Wesentlichen zu verhindern, dass die Aktion im catch-Block ausgeführt wird. Ein besserer Weg, dies zu tun, ist eine bedingt kompilierte Methode.

Try 
... 
Catch ex As Exception 
    DebugLog(ex) 
    Throw 
End Try 

<Condition("DEBUG)> _ 
Public Sub DebugLog(ByVal ex As Exception) 
    Messagebox.Show("errors suck") 
End Sub 
0

Ich bemerke, dass Sie hier nie etwas als akzeptiert markiert haben. Haben Sie von aspektorientierter Programmierung gehört? Das ist eigentlich ähnlich zu etwas, das ich in einem neuen Projekt implementieren möchte, also war ich neugierig, ob Sie etwas anderes damit getan haben. Außerdem ist es eine Frage von einem Jahr ... Sie haben vielleicht etwas getan und es nicht geschafft weiter zu verfolgen.

Und dann dämmert es mir, dass es sieht aus wie der Fragesteller sein Konto geschlossen hat ...

0

Hier ist, wie ich es tun:

Aktiviert:

Try ' : Catch: End Try 
    doSomething 
    andSomeMore 
    etcEtc 
' Try 
Catch ex As Exception 
    handleException 
End Try 

Deaktivieren Sie die oben die beiden Kommentarzeichen durch Löschen:

Try : Catch : End Try 
    doSomething 
    andSomeMore 
    etcEtc 
Try 
Catch ex As Exception 
    handleException 
End Try 
Verwandte Themen