Entwickler-Ecke
C# - Die Sprache - Hat ein problem festgestellt - trotz try?
reox - Do 12.02.09 22:50
Titel: Hat ein problem festgestellt - trotz try?
Ich hab derzeit ein sehr merkwürdiges problem mit einem projekt an dem ich gerade arbeite...
Ich baue einen Client - Server auf und versende daten. Soweit alles OK, läuft und macht mir keine probleme. Nachdem die routine abgehandelt ist, schmiert der Server mit einem Windows typischen "Es wurde ein Problem festgestellt und das programm musste beendet werden" ab. Das Merkwürdige: Es ist überall ein try catch(Exeption) gesetzt was ja eigentlich alle Fehler abfangen sollte und in einen Log schreibt.
Wie kann ich jetzt den Fehler finden? Ich hab gar keinen ansatz wo der sein soll, da ich ja nichtmal weiß wo irgend eine exception geschmissen wird... Gibts da nen trick oder so, außer jetzt debuggen was ich irgendwie mit dem VS2008 nicht hinbekomme?
Console.Beep() - Fr 13.02.09 09:25
Wenn die Ausnahmen in den Log geschrieben werden denke ich mal dass du dort schauen solltest.
Ansonsten einfach jeden Schritt durchgehn^^
(ich vermute mal das im catchblock was passiert ist,bitte korrigiert mich wenn ich mich irre)
Horschdware - Fr 13.02.09 12:04
Der Debugger ist dazu da um Fehler zu finden.
Alternativ bleibt dir nur die Glaskugel.
PS: Die Verwendung eines try..catch Blocks löst nicht alle Probleme..
reox - Fr 13.02.09 18:45
also ich bin nun eher zufällig drauf gekommen woran es lag... Ich hab einen Sockel static definiert (warum weiß ich jetzt auch net mehr) und jetzt gehts.
Gibts da nen Grund warum das Program abstüzt wenn ich bestimmte Objekte static mache?
Kha - Fr 13.02.09 19:07
Static-Felder müssen logischerweise initialisiert werden, bevor die Klasse das erste Mal verwendet wird. Wenn die Klasse keinen statischen Konstruktor besitzt (jetzt wird's implementationsspezifisch), passiert das sogar schon, sobald die erste Methode ausgeführt wird, die auf die Klasse verweist. Die Exception trat also wahrscheinlich auf, bevor überhaupt dein erster try-Block ausgeführt wurde - du bräuchtest einen Block
um diese Methode,
in ihr ist zu spät.
Also quasi:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| class Foo { static Socket socket = ...; static void TuWas(); }
...
void Start() { try { ... Foo.TuWas(); |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!