![]() |
Fehler-Meldung unterbinden?
Hallo,
es gibt bei .exe's ja leider manchmal Fehlermeldungen beim Ausführen von irgendwelchen Sachen die nicht funktionieren, die beim Ausführen aus der Programmierungsumgebung ne Exception hervorrufen würden. Nehmen wir mal das Beispiel pop3-client, ich will mich mit nem Server verbinden, Starten "aus Delphi" kommt bei, sagen wir falschem Host ne Exeption, beim Starten der exe an sich, kommt nur ein kleines Fenster 'not connected', wie kann ich nun aber das Auftauchen dieses Fenster verhindern? Ich möchte also nach Möglichkeit expliziet das Melden von Fehlern verhindern, danke, :arrow: fröhliche Weihnachten :!: Czapie |
Hi czapie,
unter Tools | Debugger Optionen solltest du auf dem Tabsheet "Exceptions" die Checkbox "Stop on Delphi Exceptions" finden, die du dann einfach ausschaltest, dann bekommst du in der IDE keine Exceptions mehr an den Kopfgeworfen (dafür hagelt es aber "richtige" Fehlermeldungen, wenn du die Exception nicht abfängst). MfG, d3g |
ok
ok, dankeschön,
und dann kommen in der .exe an sich (drück ich mich überhaupt verständlich aus?) auch keine Fehlermeldungen mehr? Naja kann ich ja ausprobieren, wenn ich nich klarkomm, meld ich mich nochmal, czapie. |
Wenn du in der ".exe an sich" keine Fehlermeldungen bekommen willst, dann musst du sie mit einem try..except-Konstrunkt abfangen:
Delphi-Quellcode:
MfG,
try
// Code hierher except on ESomeException do; // Exceptions vom Typ ESomeException hier abfangen // Im Moment werden sie gleich ausgeblendet weil dur eine leere // Anweisung (";") hinter dem "do" steht // wenn hier kein on..do-Statement kommt, dann werden _alle_ // Exceptions hier abgefangen end; d3g PS. Fehler im Code-Formatter: on wird nicht fett :( |
ahja
Ok, hab eben grad die Sache mit der Debug-Option ausprobiert, die hat zwar schon in Delphi die Exceptions abgefangen, aber in der .exe kamen dann noch diverse Fehlermeldungen.
Wie ist die Sache mit den Exceptions zu verstehen, wenn ich ESomeException schreibe fängt er alle möglichen ab ??? Und wenn ich den on..do block leer lasse dann werden alle Ignoriert? danke, möge der Weihnachstmann dich reich beschenken :D czapie, |
Hi czapie,
es läuft so: der Code innerhalb von try..except wird normal ausgeführt. Wenn jetzt eine Exception auftritt, springt er in den except-Teil. Hier steht Code, der bestimmt, was passieren soll. Steht da keiner (nur das "end"), dann passiert nichts, das dürfte es sein, was du willst. Jetzt kann man allerdings mit on..do die Exceptions noch filtern, sodass nur Exceptions von bestimmten Typen abgefangen werden, alle anderen nicht. Das ist die normale Vorgehensweise, denn wenn man alle Exceptions abfängt und es wird einmal eine abgefangen, von der du gar nicht wusstest, das sie auftritt, dann wirst du es auch nicht bemerken und hast damit eventuell ein Problem, weil du den Fehler nicht erkennen kannst. Also: schalte in den Debuggeroptionen diese Checkbox wieder ein, schaue die in der Fehlermeldung den Exception-Typ an (er beginnt mit einem E) und trage in deinem try..except-Konstrukt
Delphi-Quellcode:
ein. Dann kannst du die Checkbox wieder ausschalten, und der Fehler sollte dich nicht mehr belästigen.
on EExeptionTyp do;
MfG, d3g |
wenn du dir sicher bist, dass keine "echten" fehler kommen können, kannst du auch except ohne "on..." nehmen, dann werden alle fehler abgefangen.
|
danke
Oh Mann, das Modem von meiner Freundin ist echt langsam und sehr Macken-reich, aber jetzt bin ich wieder zu hause,
also was ich sagen wollte, danke Leute! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz