Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fehler abfangen: Welche Möglichkeiten? (https://www.delphipraxis.net/43475-fehler-abfangen-welche-moeglichkeiten.html)

Keex 4. Apr 2005 19:10


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

toms 4. Apr 2005 19:11

Re: Fehler abfangen: Welche Möglichkeiten?
 
Hallo!

Suche im Forum nach Hier im Forum suchenMadExcept (Tutorial: Exceptions)

3_of_8 4. Apr 2005 19:49

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.

Robert_G 4. Apr 2005 19:56

Re: Fehler abfangen: Welche Möglichkeiten?
 
Zitat:

Zitat von 3_of_8
//Damit werden sämtliche Exceptions dem User verschwiegen, es sei denn sie sind so schwerwiegend,
//dass das Programm abstürzt.

:shock: Wie wär's mit der richtigen Herangehensweise? Wenn die Exception wirklich ein Fehler ist, dann solte er verhinderbar sein.
Wenn sie eine "Ausnahme" darstellt, die speziell behandelt werden soll: Dann fängt man nur diese Ausnahme ab und behadelt sie entsprechend...

3_of_8 4. Apr 2005 19:59

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.

Christian Seehase 4. Apr 2005 21:17

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:

Zitat von 3_of_8
beispielsweise Umrechnungsfehler oder Divisions by Zero, die oft vom User augelöst werden zu verstecken oder abzufangen.

für meinen Geschmack sollte die Programmlogik solche Fehler gar nicht erst entstehen lassen können, indem man, z.b., vor der Berechnung die einzelnen Bestandteile prüft.

Keex 4. Apr 2005 22:33

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? :)

TeTSuO 4. Apr 2005 23:01

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:

Const
    ...
    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.
Wenn ich noch eine Testversion programmiere setze ich im Quelltext

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