[Delphi / Exception] création de type d'exception particulier

création de type d'exception particulier [Delphi / Exception] - Delphi/Pascal - Programmation

Marsh Posté le 12-12-2005 à 16:06:45    

salut
je suis entrain de reprendre un code qui utilise ses propres types d'exceptions;
pour l'linstant j'ai ce type défini:
 
ETimeOut = class(Exception);
 
et partout on s'en sert comme suit:
 
ETimeOut.Create('blabla a timeoutise');
 
ce qui affiche l'exception à l'écran.
 
j'aimerais modifier ce comportement et au lieu de me taper le 'blabla a timeoutise' à l'écran, pouvoir le loguer dans un fichier de log dont j'ai créé déjà la méthode ( TraceMsg(Data: String); )
 
comment on fait pour redéfinir ce comportement facilement ?
 
merci bcp pour votre aide, sachant que je suis tout noob au delphi :)


Message édité par k666 le 12-12-2005 à 16:42:57
Reply

Marsh Posté le 12-12-2005 à 16:06:45   

Reply

Marsh Posté le 13-12-2005 à 14:01:49    

Si tu veut loguer les exception sans suprimer le message à l'écran(ce qui ne me parait de toute facon pas souhaitable, puisqu'il apparait uniquement dans le cas d'une exception non géré), c'est assez simple : tu surcharge le constructeur de ton exception.
 

ETimeOut = Class(Exception)
public constructor create(message : string);
.....
constructor ETimeOut.create(message : string);
begin
   TraceMsg(message: String);
   inherited create(message);
end;


 
Le comportement du truc est donc que les exceptions sont logués qu'elle soit ou non gérée par un try/except. Le reste du comportement ne change pas.
Si tu veut que les message n'aparaissent pas, utiise Try...except. Si tu ne maitrise pas les exception sous Delphi, désolé: il va falloir lire la doc  ;)  (rubrique "exception" )


Message édité par Zozol le 13-12-2005 à 17:04:33
Reply

Marsh Posté le 13-12-2005 à 15:22:43    

Tu peux aussi intercepter les exceptions non récupérées : il faut associer une procédure à Application.OnException
Mais comme l'a dit zozol, pour faire ça proprement il faut des try/except autour du code susceptible de déclancher des exceptions, afin de traiter ça au bon endroit.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed