![]() |
Fehler abfangen: Welche Möglichkeiten?
Hi,
ich muss ein Referat zu Methoden des Fehlerabfangens halten und frage mich nun welche Möglichkeiten es da generell in Delphi gibt. Bisher habe ich zum einen natürlich try...except gefunden und zum anderen wage Andeutungen über so andere Exceptions, wo ich aber nicht weiss wie das funktioniert. fallen euch da noch andere möglichkeiten ein? Gruß Keex |
Re: Fehler abfangen: Welche Möglichkeiten?
|
Re: Fehler abfangen: Welche Möglichkeiten?
Also gut:
[Delphi] try //... except //oder finally //... end; //dann gehts auch noch so: Du brauchst ein TApplicationEvents-Control auf deiner Form und //definierst ein OnException Ereignis so: procedure ApplicationEvents1OnClick(Sender: TObject; E: Exception); begin //Man kann hier auch noch einfügen: //showmessage('Es ist ein Fehler aufgetreten: '+e.message); //Damit wird dem Benutzer eine Fehlermeldung angezeigt, deren Text du definieren kannst. e:=nil; end; //Damit werden sämtliche Exceptions dem User verschwiegen, es sei denn sie sind so schwerwiegend, //dass das Programm abstürzt. |
Re: Fehler abfangen: Welche Möglichkeiten?
Zitat:
Wenn sie eine "Ausnahme" darstellt, die speziell behandelt werden soll: Dann fängt man nur diese Ausnahme ab und behadelt sie entsprechend... |
Re: Fehler abfangen: Welche Möglichkeiten?
Ja, aber wenn man sie grundsätzlich abfängt stört das den User nicht. Natürlich versuche ich auch, jeden Fehler auszumerzen aber manchmal ist es auch gut bestimmte Fehler, beispielsweise Umrechnungsfehler oder Divisions by Zero, die oft vom User augelöst werden zu verstecken oder abzufangen.
|
Re: Fehler abfangen: Welche Möglichkeiten?
Moin Keex,
beschreibe doch mal konkreter welche Art von Fehlern abgefangen werden soll. Fehler kann man, beispielsweise, dadurch vermeiden, dass man die Wertebereiche für die Eingabe einschränkt. Eine andere Möglichkeit ist es, Funktionen eines Programmes, die zu einem bestimmten Zeitpunkt bzw. in einen bestimmten Zusammenhang keinen Sinn machen einfach zu deaktivieren, statt eine (Fehler)Meldung zu bringen, dass diese Funktion zur Zeit nicht möglich ist. @3_of_8: Zitat:
|
Re: Fehler abfangen: Welche Möglichkeiten?
also ich habe auch schon daran gedacht einzubringen, dass man durch beschränkung von Eingabemöglichkeiten/Deaktivirung von Komponenten Fehler umgehen kann, aber ich denke der Schwerpunkt sollte auf Exceptions liegen, also sowas was dann mit try..except abgefangen wird (zum Beispiel es wird versucht einen string in einen integer umzuwandeln, wenn dieser keinen numerischen wert hat). in diesem zusammenhang ging es mir halt darum ob es da ausser Try...except noch Möglichkeiten gibt, da ich in dem Referat ja möglichst alle Möglichkeiten behandeln möchte. in der Delphi-Hilfe hatte ich aber nur Try...except gefunden, deshalb frage ich hier nochmal nach.
also es gibt noch dieses Application-Events Control (was bei mir aber irgendwie nicht recht klappen wollte), aber sonst ist wohl nur try...except vorhanden, lieg ich da richtig? :) |
Re: Fehler abfangen: Welche Möglichkeiten?
[quote]
Ich mach das mit abfangen auch mit der Kompo Bei einem Fertigen Progamm sieht das bei mir so aus
Delphi-Quellcode:
Wenn ich noch eine Testversion programmiere setze ich im QuelltextConst ... appRelease = True; LogErrors = True; Var errLog: TStringList; ... //////////////////////////////////////////////////////////////// // // Fehlerbehandlungsroutine (TApplicationEvents.OnException) // procedure TfMain.OnAppException(Sender: TObject; E: Exception); begin // wenn Fehler Speichern if bLogErrors Then Begin // Fehlernachricht speichern errLog.Add(E.Message); errLog.SaveToFile(appfileLogFile); // speichern in TEMP\errors.log; End; // Fehler für Release (Veröffentlichungs) Version ausblenden if not appRelease Then E:=nil; end; ... initialization errLog:=TStringList.Create; errLog.Clear; finalization errLog.Destroy end.
Delphi-Quellcode:
Const ... appRelease = False LogErrors = False |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 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