Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Behandelte Exception wird nicht angezeigt
Magic2001 - Mo 06.06.11 13:02
Titel: Behandelte Exception wird nicht angezeigt
Ich habe in meinem Code folgendes versucht:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| try MachWas(Query1); except on E:Exception do begin showmessage(E.ClassName+':'+E.Message); end; Query1.Next; end; |
Aber anstatt der message bekomme ich nur die normale fehlermeldung wenn ich die .exe starte. Woran liegt das? Muss ich in den projektoptionen noch etwas einstellen?
jaenicke - Mo 06.06.11 13:07
Eigentlich nicht, aber ich hatte das glaube ich auch einmal. Ich habe das dann so gemacht:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| try except on E: EDBEngineError do if (E.Errors[0].ErrorCode = $00002803) ... on E: Exception do raise; end; |
Das ging.
In Except auf Next? Bist du sicher, dass das eine gute Idee ist? Wenn ohnehin schon etwas schiefgegangen ist? :gruebel:
Gerd Kayser - Mo 06.06.11 13:22
Müßte das try-except nicht eigentlich in der Funktion / Prozedur Machwas stehen? <grübel>
Magic2001 - Mo 06.06.11 13:22
Hier mein original Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| try polyline[i].lat := strtofloat(lat); polyline[i-5].lon := strtofloat(lon); except on E:Exception do begin showmessage(E.ClassName+':'+E.Message); raise; end; |
das i-5 löst einen Fehler aus: zugriffsverletzung bei .... Lesen von adresse...
Da ich mein Programm aber mit vernünftigen Fehlermeldungen ausstatten möchte (wo ich dann weis was den Fehler ausgelöst hat), dachte ich der oben gezeigte weg wäre der richtige.
Aber das funktioniert nicht.
Ich habe D2009
Narses - Mo 06.06.11 13:53
Moin!
Magic2001 hat folgendes geschrieben : |
| Aber das funktioniert nicht. |
Was heißt "funktioniert nicht" denn genau? :nixweiss: Was passiert und was sollte passieren? :idea:
Probier das mal:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| try except ShowMessage(Exception(ExceptObject).ClassName+': '+Exception(ExceptObject).Message); raise; end; |
cu
Narses
Horschdware - Mo 06.06.11 14:00
Magic2001 hat folgendes geschrieben : |
das i-5 löst einen Fehler aus: zugriffsverletzung bei .... Lesen von adresse...
|
Kann es sein, dass du hier auf einen Index eines Arrays zugreifst, ohne vorher zu prüfen, ob du dich noch innerhalb der Grenzen des Arrays befindest? Das sieht hier ganz danach aus... (für alle i < 5 wie in deinem Beispiel führt dich a[i-5] auf eine Position ausserhalb der Arraygrenzen)
Bergmann89 - Mo 06.06.11 14:17
Richtig, anstatt an dem Fehler rum zu doktorn solltest du die Ursache dafür finden. Die Prüfung eines Index könnte so aussehen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| var i: Integer; arr: array[-2..10] of Integer; if (i >= Low(arr)) and (i <= High(arr)) then arr[i] := StrToInt(EinText); |
jetzt erfolgt der Zugriff auf das Array erst wenn der Index die richtige Größe hat. Im else-Block könnte man dann noch ne Fehlermeldung oder sowas ausgeben, wenn du das unbedingt willst.
MfG Bergmann.
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!