Home  |  Über den Autor  |  Impressum  |  .NET Developer Group Braunschweig  |  Hönigsberg & Düvel

RSS 2.0 | Atom 1.0 | CDF | Send mail to the author(s)  
 Thursday, March 01, 2007

Ich habe bei einem Projekt gerade ein "Problem", dass ich nicht wirklich nachvollziehen kann. Hier mal ein Codeschnipsel:

FileInfo fi = new FileInfo(licName);

if (fi.Exists == false)
{   
      throw new Exception("Die Lizenzdatei konnte nicht gefunden werden.");
}

fi.Exists liefert mir true zurück, trotzdem spring er in die Klammer und markiert die Exception!

Wenn ich anstatt des throw einfach eine Dummy-Zeile (z.B. string s="";) einsetze, dann geht er wie erwartet nicht in die Klammer. Scheint also tatsächlich was damit zu tun zu haben, das ich dort eine Exception feuere. Ich hab erst gedacht, das Visual Studio mal wieder aus dem Tritt gekommen ist, also Rechner neu starten! Der Fehler passiert aber auch nach einem Neustart immer noch.


Ich hab spaßeshalber die Bedingung mal auf true gesetzt und eine Dummy-Zeile eingebaut:

if (fi.Exists == true)
{   
      string s = "";
      throw new Exception("Die Lizenzdatei konnte nicht gefunden werden.");
}

In diesem Fall springt der Debugger richtigerweise auf die erste Zeile. Setze ich die Bedingung auf false, springt er direkt in die zweite Zeile zur Exception. Die Exception wird zwar nicht wirklich gefeuert, aber der Debugger markiert mir die Zeile.

Hat jemand dafür eine Erklärung?

NACHTRAG: Ich habe gerade mal eine weitere Dummy-Zeile vor der Exception eingefügt. Nun funktioniert es wie erwartet!?!

 


3/5/2007 11:35:42 AM (W. Europe Standard Time, UTC+01:00)
Hi,

hast Du den original Codeabschnitt geschickt (copy+paste), oder können da irgendwie falsche Klammerzeichen oder so reingekommen sein. Habe bei mir das Codebeispiel nachgestellt, und es läuft ohne jeden Fehler.

Henning
3/5/2007 12:10:49 PM (W. Europe Standard Time, UTC+01:00)
Hallo Henning,

der Code ist original. Der Titel ist vielleicht ein wenig verwirrend. Die Exception wird nicht wirklich gefeuert. Der Debugger springt nur in die Zeile ohne sie auszuführen. Das ist mir schonmal passiert. Da hat es sich um eine return-Anweisung gehandelt, die dann aber auch nicht ausgeführt wurde. Unter welchen Umständen dieser Fehler im Debugger auftaucht ist mir allerdings schleierhaft. Wenn der Code bei Dir fehlerfrei läuft, dann müssen da noch ein paar mehr Faktoren im Spiel sein...
Karim
Name
E-mail
Home page

Comment (HTML not allowed)  

Enter the code shown (prevents robots):