Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Application.Onexception benutzen... (https://www.delphipraxis.net/70818-application-onexception-benutzen.html)

mojo777 5. Jun 2006 14:04


Application.Onexception benutzen...
 
Hallo!
wie benutze ich
Delphi-Quellcode:
Application.OnException
habe mich jetzt an den beitrag DP_HIER
gehalten und sieht nun so aus:

Delphi-Quellcode:
procedure TfmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
try
(...)
Application.OnException := ExceptGerMeldung;
end;

procedure TfmMain.ExceptGerMeldung(Sender : Tobject; E : Exception);
begin
writeLog('APPLICATION FEHLER: '+#13+E.Message);
end;
gerade kam wieder irgndwoher so ein blöder fehler, der nicht abgefangen wurde (AccessViolation).

gruß

Phistev 5. Jun 2006 14:12

Re: Application.Onexception benutzen...
 
Die Zuweisung an Application.OnException muss vor der Exception erfolgen, am besten also schon in FormActivate oder durch TApplicationEvents

Hawkeye219 5. Jun 2006 14:21

Re: Application.Onexception benutzen...
 
Hallo,

vielleicht ist das eine Erklärung:

Zitat:

Zitat von Delphi-Hilfe
Mit OnException werden nur Exceptions behandelt, die während der Bearbeitung von Botschaften auftreten. Exceptions, die vor oder nach der Ausführung der Methode Run der Anwendung auftreten, erzeugen keine OnException-Ereignisse.

Wie SirThornberry dir schon im anderen Thread gesagt hat: du solltest den Fehler nicht verbergen sondern versuchen, ihn einzukreisen. Da er offenbar nur beim Beenden des Programms auftritt, solltest du alle Behandlungsroutinen für OnDestroy prüfen. Vielleicht liegt die Ursache für das Problem ja auch im FINALIZATION-Abschnitt einer Unit.

Gruß Hawkeye

mojo777 5. Jun 2006 16:33

Re: Application.Onexception benutzen...
 
ich habs jetzt in FormCreate reingepackt.
aber die fehler werden immer noch nicht aufgefangen. :-(
Delphi-Quellcode:
procedure TfmMain.FormCreate(Sender: TObject);
begin
Application.OnException := ExceptGerMeldung;
end;
@hawkeye. ja. die idiologie ist gut. aber die fertigstellung wichtiger prozesse steht im vordergrund. ich kann nciht alle destruktoren prüfen. es sind zu viele. (ca 100)

:(

mojo777 5. Jun 2006 16:50

Re: Application.Onexception benutzen...
 
achso. nochetwas. wenn die exception kommt, fängt der debugger sie auch nicht auf. ich lande in der ide als ob das programm richtig geschlossen wurde. :-(

Zacherl 5. Jun 2006 16:52

Re: Application.Onexception benutzen...
 
Zitat:

ja. die idiologie ist gut. aber die fertigstellung wichtiger prozesse steht im vordergrund. ich kann nciht alle destruktoren prüfen. es sind zu viele. (ca 100)
Die Zeit wirst du investieren müssen ... ich behebe Probleme immer direkt nach ihrem auftreten, da man sonst die Übersicht verliert und den Fehler nicht mehr einkreisen kann, da es zu viele Möglichkeiten gibt.

Wie erkennst du eigentlich, dass dein Programm einen Fehler verursachte? Kommt eine Fehlermeldung? Wenn ja welche?

Florian

mojo777 5. Jun 2006 17:01

Re: Application.Onexception benutzen...
 
hi florian. die fehlermeldung tritt unregelmäßig auf.
nach ein paaar umstellungen dachte ich hätte sie behoben. aber sie ist wieder da. :-(
ich habe schon einen anderen thread dazu angefangen. (click) hier wollte ich nur die benutzung von Application.OnException ausfragen.

:gruebel:


EDIT:
habe soeben gesehen, dass die Application.OnException doch noch fehler abfängt. aber halt nicht meinen "problemfehler".
ein ganz gerissener ist das....


gruß

yx-man 14. Jan 2009 07:50

Re: Application.Onexception benutzen...
 
Ich hänge mich mal hier dran. Ich habe jetzt auch so einen hartnäckigen Fehler. Interessant ist, dass er erst mit Turbo Delphi 2006 kommt, mit welchem ich Delphi 2005 abgelöst haben. Es ist auch immer die selbe Adresse, mit der ich Probleme habe (0000001F bzw. 00000023). Sind das bekannte Adressen ?
Kann das mit privaten Komponenten zu tun haben ? Ich hatte da eine erfunden und Tedit noch einen zusätzlichen Parameter mitzugeben?

Gruß Volker

Uwe Raabe 14. Jan 2009 08:08

Re: Application.Onexception benutzen...
 
Zitat:

Zitat von mojo777
die idiologie ist gut.

Es heißt "Ideologie" (kommt aus dem Griechischen und heißt Ideenlehre).
Fehler im Programm zu ignorieren, zu verschleiern oder wegzudiskutieren finde ich allerdings "idiotisch".

Tip: Zur effektiven Fehlersuche verwende ich madexcept.

yx-man 14. Jan 2009 08:27

Re: Application.Onexception benutzen...
 
Zitat:

Fehler im Programm zu ignorieren, zu verschleiern oder wegzudiskutieren finde ich allerdings "idiotisch".
Der Meinung bin ich auch, ich möchte Ihn ja auch finden. Aber wie finde ich einen Fehler, der nur sporadisch auftritt und nur CPU-Adressen sagt. Ich hatte es gestern sogar einmal geschafft, dass das Programm mir im Debugmodus an der betreffenden Stelle anhielt. Leider kam ich hier mit dem Asssemblercode auch nicht weiter, da ich nirgendwo einen Hinweis gefunden habe, worum es sich handelt bzw. wer hier eine nicht mehr exisitierende Adresse aufruft. Deshalb die Frage nach 0000001F, weil das ja wie eine allgemeine Adresse aussieht. Ich glaube, der Abbruch kamm aus "RaiseExecption". Aber das es sich um eine Exception handelt, wußte ich auch schon vorher.

Gruß Volker


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:59 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz