Geworfene Exceptions finden

30. März 2005 15:48

Mir ist kürzlich aufgefallen das eine Option im Visual Studio viel zu selten genutzt wird - und zwar die, um den Grund für eine geworfene Exception zu finden.

Das Problem: Irgendwo im Code tritt eine Exception auf die nicht behandelt wird. Resultat: Man steht im Visual Studio hinter der Zeile Application.Run() - und hat eine Fehlermeldung vor sich, die schlicht und ergreifend nur den Exception-Text enthält. Ich habe schon häufiger gesehen das Programmierer in dieser Lage vor einem praktisch 'unlösbaren' Problem standen: Wo genau kam diese Excpeption eigentlich her ist die Frage, die offenbar so schwer zu klären ist.

Als 'Workaround' für die Situation gibt es dann häufig Lösungen, bei denen 'lokale' Codebereiche mit try/catch(Exception) 'abgedichtet' werden. Im 'catch' Block wird dann noch meist eine Meldung per Debug.WriteLine() ausgegeben - und zwar einfach nur dafür, um der tatsächlichen Fehlerstelle 'näher' zu kommen.

Dieses Vorgehen ist aber unsinnig. Der richtige Weg findet sich hinter dem Befehl 'Exceptions' im Menu 'Debug'. Dort schaltet man einfach die Option 'Break into the Debugger' ein. Tritt dann eine Exception auf, so findet man sich im Quelltexteditor an der Stelle wieder, bei der die Exception ausglöst wurde: Exception-Quelle gefunden.

So einfach kann das sein :-)

 

Kommentare

30.03.2005 17:24:02 #

... und ich dachte, man muesste nur in die Property StackTrace des Exception-Objekts gucken. Hm.

Oliver Sturm

30.03.2005 19:16:36 #

Oliver,

klar kann man machen (wenn man weiss das der callstack da drin steht Smile ). und wenn man ein projekt mit einer handvoll files hat, dann ist das wohl auch eine prima methode.

wenn man ein projekt mit vielen files hat (wir haben hier z.b. 4000+ davon), dann ist es _ungeheuer_ praktisch, direkt an der richtigen stelle im source zu stehen.

da man sich zu diesem zeitpunkt noch im debugger mit richtigem scope befindet, kann man als netten nebeneffekt auch noch in den aktuellen zustand der variablen reinsehen Smile

thomas woelfer

31.03.2005 12:55:03 #

Ich hab ja nicht bezweifelt, dass das nuetzlich sein kann. Aber immerhin muss ich dafuer einen weiteren Testdurchlauf machen und das Ergebnis exakt reproduzieren, oder ich muesste das Feature staendig eingeschaltet haben, was gerade bei groesseren Projekten auch schnell unerwartete Nebeneffekte haben kann... gut moeglich, dass ich dann ueber die eine oder andere Exception stolpere, die mich eigentlich gar nicht interessierte.

Und ... ich will doch hoffen, dass jeder weiss, dass da der callstack drinsteht.

Oliver Sturm

31.03.2005 13:11:07 #

Oliver,

>> doch hoffen, dass jeder weiss

ich denke man kann getrost davon ausgehen, as dich diese hoffnung truegt. Smile
da recht eigentlich ein kurzer blick in die newsgroups...

thomas woelfer

31.03.2005 14:48:23 #

Ich widerspreche nicht. Ich sagte ja nur, ich will doch hoffen... man wird doch hoffen duerfen. Vielleicht haben wir ja hier schon wieder jemanden erleuchtet. Smile

Oliver Sturm

Kommentare sind geschlossen

Kalender

<<  Mai 2012  >>
MoDiMiDoFrSaSo
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

View posts in large calendar