2009-05-21 9 views
5

Chcę, aby projektant złapał błąd podczas debugowania i chcę, aby użytkownik zobaczył moją przyjazną wiadomość, jeśli wystąpi błąd. Wiem, że mogę acomplish to z następujących powodów:Czy istnieje lepszy sposób, aby studio graficzne zignorowało try/catch w trybie debugowania?

#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 

nie chcę mieć do pisania wszystkie #statements i konieczności ich zaśmiecania mojego kodu. Wygląda na to, że taka powinna być powszechna potrzeba i musi istnieć lepszy sposób. Czy ktoś wie lepszy sposób?

+0

Czy kiedykolwiek udało ci się rozwiązać ten problem? Czy nadal potrzebujesz pomocy w tym zakresie? – jcolebrand

Odpowiedz

0

W sekcji catch twojego Try..Catch powinieneś napisać komunikat wyjątku, stacktrace i cokolwiek innego, co możesz chcieć do pliku logu - dodatkowo możesz zapisać te dane do dziennika zdarzeń Windows.

W najgorszym wypadku można po prostu umieścić punkty przerwania w sekcji Złapanie bloków Try..Catch, ponieważ normalnie nie powinno się ich uderzać, nie powinno to być wielkim problemem po skonfigurowaniu.

15

W VS.NET możesz określić, czy chcesz, aby debugger się zepsuł, gdy wyjątek to zrzucony (nie tylko wtedy, gdy jest nieobsługiwany).

Zobacz debugowanie | Wyjątki ... element menu (Ctl-Alt-E w skrótach klawiaturowych). Wybierz wyjątek, który Cię interesuje, a następnie zaznacz pole "wyrzucony" dla tego wyjątku.

Można zaznaczyć tego pola na kilku poziomach (wszystkie wyjątki CLR, wszystkie wyjątki CLR w danym obszarze nazw lub bardzo szczególnych wyjątków)

3

nie ma dobrego sposobu, aby ją ignorować zaczep spróbować innych niż to, co zrobiłaś. Ale możesz sprawić, że kod będzie trochę czystszy i zasadniczo uzyskasz ten sam efekt. Zasadniczo próbujesz uniemożliwić działanie akcji w bloku catch. Lepszym sposobem na to jest metoda skompilowana warunkowo.

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

Zauważam, że nigdy nie zaznaczyłeś niczego jako zaakceptowanego tutaj. Czy słyszałeś o programowaniu zorientowanym na aspekt? Jest to podobne do czegoś, co zamierzam wprowadzić w nowym projekcie, więc byłem ciekawy, czy zrobiłeś z tym cokolwiek innego. Poza tym, że jest to roczne pytanie ... być może coś zrobiłeś i nie udało ci się nawiązać.

I to mnie olśni, że wygląda Pytający zamknął jego konto ...

0

Oto jak to zrobić:

Włączone:

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

Wyłączenie powyższe poprzez usunięcie dwóch znaków komentarza:

Try : Catch : End Try 
    doSomething 
    andSomeMore 
    etcEtc 
Try 
Catch ex As Exception 
    handleException 
End Try 
Powiązane problemy