AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Fehler abfangen: Welche Möglichkeiten?
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler abfangen: Welche Möglichkeiten?

Ein Thema von Keex · begonnen am 4. Apr 2005 · letzter Beitrag vom 4. Apr 2005
Antwort Antwort
Keex

Registriert seit: 25. Feb 2004
29 Beiträge
 
#1

Fehler abfangen: Welche Möglichkeiten?

  Alt 4. Apr 2005, 19:10
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
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: Fehler abfangen: Welche Möglichkeiten?

  Alt 4. Apr 2005, 19:11
Hallo!

Suche im Forum nach Hier im Forum suchenMadExcept (Tutorial: Exceptions)
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Fehler abfangen: Welche Möglichkeiten?

  Alt 4. Apr 2005, 19:49
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.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#4

Re: Fehler abfangen: Welche Möglichkeiten?

  Alt 4. Apr 2005, 19:56
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.
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...
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Fehler abfangen: Welche Möglichkeiten?

  Alt 4. Apr 2005, 19:59
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.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Fehler abfangen: Welche Möglichkeiten?

  Alt 4. Apr 2005, 21:17
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 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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Keex

Registriert seit: 25. Feb 2004
29 Beiträge
 
#7

Re: Fehler abfangen: Welche Möglichkeiten?

  Alt 4. Apr 2005, 22:33
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?
  Mit Zitat antworten Zitat
Benutzerbild von TeTSuO
TeTSuO

Registriert seit: 26. Feb 2005
Ort: Ludwigshafen am Rhein
60 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Fehler abfangen: Welche Möglichkeiten?

  Alt 4. Apr 2005, 23:01
[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
”Wer immer nur das tut was er schon kann, wird immer das bleiden was er schon ist”

DiaSchau
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz