Entwickler-Ecke
Sonstiges (Delphi) - try...except greift nicht ???
bis11 - Mo 12.05.03 14:22
Titel: try...except greift nicht ???
Hallo Leute,
ich stehe im Moment auf dem schlauch, warum greift in diesem Code der try..except-Block nicht ?
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| begin typfile := TStringList.Create; conffile := TStringList.Create; typfile.Clear; conffile.Clear; printerkonfig.Clear; typfile.LoadFromFile('prntyp.txt'); for i := 0 to typfile.Count - 1 do begin if posn(printermodel.Text,typfile.Strings[i],1) > 0 then begin try conffile.LoadFromFile(copy(typfile.Strings[i],posn(';',typfile.Strings[i],2)+1,Length(typfile.Strings[i]))); except printerkonfig.Items.Add('Keine Zusatzfächer'); end; end; end; if conffile.Count > 0 then for j := 0 to conffile.Count - 1 do printerkonfig.Items.Add(copy(conffile.Strings[j],0,posn(';',conffile.Strings[j],1)-1)); end; |
Nightfly - Mo 12.05.03 14:28
bin auch kein experte, aber muß es nicht try except do heißen, wobei hinter except bloß steht bei welchem fehler er das hinter do geschriebene ausführen soll?
Udontknow - Mo 12.05.03 14:49
Was heisst "greift nicht"?`
Setze mal einen Breakpoint auf die Zeile nach try. Kommt das Proggie überhaupt dahin?
Cu,
Udontknow
bis11 - Mo 12.05.03 14:50
Die Exception wird abgefangen, wenn ich das Programm nicht in der IDE ausführe. In der IDE kommt die Exception trotz des Blocks.
Delete - Mo 12.05.03 14:52
Einstellungsfrage -> Menü "Tools/Debugger-Optionen" -> "Sprach-Exceptions" -> bei Delphi-Exceptions stoppen.
Udontknow - Mo 12.05.03 15:03
Aha, das meintest du mit "greift nicht". :wink:
Ich würde nicht wie MathiasSimmack lösen, da dann eben wirklich gar keine Exceptions mehr berücksichtigt werden. Ein exit ist meist angebrachter.
Cu,
Udontknow
Delete - Mo 12.05.03 21:09
exit? Warum? Wenn ich bis11 richtig verstanden habe, hat´s ihn wohl nur gestört/gewundert/genervt, dass Delphi bei Exceptions aussteigt, während sich die kompilierte Exe da ... hm, "kollegialer" verhält.
Für die Entwicklung ist es IMHO recht interessant, wenn man auf diese Weise auf mögliche Fehlerquellen aufmerksam gemacht wird. In der Praxis allerdings wünscht man sich, dass das Programm die unschöne Fehlerbox abfängt und evtl. eine eigene Meldung präsentiert. (o.ä.)
Exceptions werden trotz der Einstellung auch weiterhin berücksichtigt, nur bleibt Delphi (im Gegensatz zur Grundeinstellung) eben still, wenn du das Programm aus der IDE heraus startest.
Gruß.
bis11 - Mo 12.05.03 21:23
Mathias hat dort vollkommend Recht. Diese Exception tritt ja nur dann auf, wenn er die Datei nicht in die Stringliste laden kann. Ich war mir eigentlich auch die ganze Zeit ziemlich sicher, das ich keinen Fehler bei dem try..except-Block gemacht habe. Wie ich dann die EXE ohne IDE ausprobiert hatte und dann noch den Beitrag vom Mathias gelesen hatte, war mir alles klar warum in der IDE die Exception kam und außerhalb nicht.
Danke nochmals an alle beteiligten.
Udontknow - Mo 12.05.03 22:23
Nun, wie ich schon sagte, wenn ich ein Programm debugge, und mich erst durch hunderte "regulärer" Exceptions kämpfen müsste, die ich immer wieder durch F9 wegdrücken müsste, würde ich sehr schnell die Lust am Programmieren bekommen. "Mögliche" Fehlerquellen lasse ich in einem Log protokollieren.
Es ist eigentlich ein allgemeiner Grundsatz:
Fange alles, was du vorhersehen kannst, ab, die unvorhersehbaren Dinge sind Fälle für die TRY/EXCEPT/FINALLY Blöcke.
Cu,
Udontknow
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!