![]() |
Ein Paar Exception-Fragen
Hallo Leute
ich habe ein Paar Fragen zu Exceptions: 1. Ich will sämtliche Exceptions, die in meinem Programm auftretten in einem Memo untereinander mitloggen, damit also eine Log-Datei über Fehler entsteht. Dass soll für sämtliche Dateien und alle Kompos gelten 2. Ich möchte, dass bestimmte Exception nirgendwo in meinem Programm, dass Programm zum anhalten bewegen, zu Beispiel soll ein EConverterror einfach übergangen werden. Wer hat da eine Lösung? Grüße TO |
Hallo,
zu 1) das ist einfach, Du must nur Deinen eigenen Exception-Handler basteln, am Besten im Hauptformular (er gilt applikationsweit):
Delphi-Quellcode:
zu 2)
type
TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private procedure MyExceptionHandler(Sender: TObject; E: Exception); public { Public declarations } end; .... procedure // Zuweisung auf Deinen eigenen Handler TForm1.FormCreate(Sender: TObject); begin Application.OnException := MyExceptionHandler; end; .... procedure TForm1.MyExceptionHandler(Sender: TObject; E: Exception); var ErrFileName, ErrMsg: String; LOG_FILE: TextFile; begin ErrFileName := ChangeFileExt(Application.ExeName, '.LOG'); ErrMsg := Format('%s : %s - %s'#13#10, [DateTimeToStr(Now), E.ClassName, E.Message]); Memo1.Lines.Add(ErrMsg); // ups Memo, hätte ich fast vergessen! AssignFile(LOG_FILE, ErrFileName); Append(LOG_FILE); Writeln(LOG_FILE, ErrMsg); Flush(LOG_FILE); // Sicherstellen, daß der Text tatsächlich in die Datei geschrieben wird. CloseFile(LOG_FILE); end; Application.ShowException(E); end; tut mir leid, aber ich verstehe nicht was Du genau willst. :spin: |
oki, danke 1. wäre gelöst
zu 2.: Ich habe eine function, in der unter anderem ein float in einen String konvertiert wird. Manchmal tritt dort ein EConVertError auf. Dann wird die function abgebrochen. Das dumme ist, das mein Programm darauf bassiert, dass diese Funktion abgeschlossen wird. Das ist nicht nur bei dieser function so, sondern in noch ein Paar anderen. Ich würde jetzt gerne Einstellen, dass in meinem ganzen Programm keine EConvertErrors mehr ausgegeben werden und dass diese mein Programm auch nichtmehr anhalten. Grüße TO |
Wie soll das gehen?
Wenn deine Funktion fehlschlägt und was falsches liefert, wie soll denn der Rest funktionieren? Beispiel: Add ist eine Funktion, die die Summe zweier Zahlen liefert. Un sie aus einem Edit liest. In der Funktion wird die Eingabe mit StrToInt entsprechen umgewandelt.
Delphi-Quellcode:
So, wenn jetzt die Konvertierung fehlschlägt, wie soll es dann weitergehen? Auch wenn du die Funktion zwinge kannst das Programm nicht abstürzen zu lassen, in der Zeile wo sthet Add div Add kracht es ja dann wieder. :roll:
var
erg: Integer; begin erg := Add div Add; |
eine Null soll zurückgegeben werden.
|
Na dann gib doch im except-Abschnitt des try-except-Blockes 0 zurück. Wo ist das Problem?
|
das das für das ganze Programm gelten soll, nicht nur in der einen Funktion.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:43 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