Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - try/except
Luncustaf - Di 22.04.03 15:12
Titel: try/except
hi,
ich hab hier den code
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| try openq.open; except AssignFile(f,'Log.txt'); {$i-} {Append(f); {$i+} if IOResult <> 0 then Halt; Writeln(f,'No Connection to Openplan-Datebase at '+TimeToStr(time)+' on '+DateToStr(date)); CloseFile(f); end;//try |
wenn nun zb die datenbank nicht an ihrem platz ist kommt eine exception as die datenbank nicht da ist - aber weiso führt er mir mei nexcept nicht aus wenn das try net klappt?
kann ich die message auch irgendwie anners abfangen?
gr€€tz
a.C.k - Di 22.04.03 16:24
Probiere es mal so:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| try openq.open; except begin AssignFile(f,'Log.txt'); {$i-} {Append(f); {$i+} if IOResult <> 0 then Halt; Writeln(f,'No Connection to Openplan-Datebase at '+TimeToStr(time)+' on '+DateToStr(date)); CloseFile(f); end; end;//try |
tommie-lie - Di 22.04.03 16:47
nein, daran liegt es nicht. Except braucht ein begin..end ebenso wenig wie ein try oder ein finally.
Aber woran es hier liegt, sehe ich auch nicht. Sicher, daß openq.open eine Exception auslöst?
GruppeCN - Di 22.04.03 17:01
Wie wäre es , wenn du dein Programm mal kompilierst und dann startest(nicht aus Delphi)???
Udontknow - Di 22.04.03 17:15
Hi!
Was ist denn, wenn du in den finally-Block einfach nur "ShowMessage('Eine Exception ist aufgereten!');" reinschreibst?
Ich vermute einfach mal, daß du aus Versehen eine weitere Exception innerhalb des except-Blocks auslöst (z.B. weil die Datei 'log.txt' nicht existiert).
Nachtrag: Sehe gerade, daß du den IO-Exception-Mechanismus abschaltest und statt dessen im Fehlerfalle das Programm per Halt beendest. Beendet sich denn das Programm?
Cu, :)
Udontknow
MSCH - Di 22.04.03 17:28
brrrr. Try/except Blöcke brauchen kein begin/end Statemant. Weiterhin würd ich den halt() Befehl aus dem Block nehmen, das ist wir Auto fahren mit 100 Sachen gegen die Wand.
grez. msch
Udontknow - Di 22.04.03 17:33
@MSCH: Full ACK. Zumindest eine Meldung sollte in irgendeiner Weise aufgeblendet werden.
Was sagen eigentlich die Breakpoints? Ist denn IOResult<>0?
Cu,
Udontknow
Luncustaf - Di 22.04.03 19:31
also mein problem ist das er gar nicht in den except block geht wenn ich durch debugge sonder bringtm ir beim open das er die db net finden kann - wenn ich den namen der db zb absichtlich verändere - das ist dann so gewollt und ich denke mir (hab noch net viel mit try/except gemacht) das er dann in den except teil sprigen muss.
das was im ecxept teil steht ersmal nicht weiter beachten -ä nder ich noch ab. mir gehts ersmal darum das er mir da gar net reingeht und ich mich frage wieso.
wenn ich try/ecxept richtig verstanden habe dann ist das grad für solche sachen das wenn ne meldung vom programm kommt wie zb database net gefunden das ich dann die ausgabe der fehlermeldung kontrolliere oder hab ich da was falsch verstanden
gr€€tz
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!