Je demande Delphi natif, pas Prism (net).Comment lever des exceptions dans Delphi?
Ceci est mon code:
raise Exception.Create('some test');
Undeclarated idenitifier "Exception".
Où est le problème, comment lancer/lever des exceptions?
Je demande Delphi natif, pas Prism (net).Comment lever des exceptions dans Delphi?
Ceci est mon code:
raise Exception.Create('some test');
Undeclarated idenitifier "Exception".
Où est le problème, comment lancer/lever des exceptions?
La classe d'exception "Exception" est déclarée dans l'unité SysUtils. Vous devez donc ajouter "SysUtils" à votre clause uses.
uses
SysUtils;
procedure RaiseMyException;
begin
raise Exception.Create('Hallo World!');
end;
Vous utilisez SysUtils n'êtes-vous pas? Exception est déclarée là IIRC.
Vous devrez peut-être ajouter sysutils à la clause uses, il n'est pas intégré et est facultatif selon Delphi en un mot.
N'oubliez pas d'ajouter SYSUTILS à vos unités uses.
Je vous propose aussi une belle façon de garder une trace des catégories, des formats de messagges et la signification d'exception:
Type TMyException=class
public
class procedure RaiseError1(param:integer);
class procedure RaiseError2(param1,param2:integer);
class procedure RaiseError3(param:string);
end;
implementation
class procedure TMyException.RaiseError1(param:integer);
begin
raise Exception.create(format('This is an exception with param %d',[param]));
end;
//declare here other RaiseErrorX
Une façon simple d'utiliser ce système est:
TMyException.RaiseError1(123);
il y a déjà 'Exception.CreateFmt' qui prend en charge Format avec un tableau de const – mjn
@mjn, mais il rend la vie des clients (le code qui utilise' TMyException') beaucoup plus facile - il suffit de passer les paramètres et la repos sera fait dans 'TMyException'. –
@EdwinYip ce que je veux dire c'est que 'raise Exception.create (format ('Ceci est une exception avec param% d', [param])) 'peut être raccourci à' raise Exception.CreateFmt ('Ceci est une exception avec param% d ', [param]); 'qui fait la même chose avec moins de touches – mjn
Pour référence ultérieure, Les erreurs de type «identificateur non déclaré» peuvent souvent être résolues en recherchant dans le code source inclus l'identificateur qui vous intéresse. Cela vous dira où il a été déclaré et il pourrait également fournir des exemples d'utilisation. –
Dans D2006 + (peut-être 2005?), Vous pouvez utiliser l'option "Refactoring -> Find Unit" dans le menu contextuel pour ajouter l'unité requise à votre clause uses. –
Gerry - fabuleux conseil ajouté là-bas! ... Je suis gêné de dire, je n'ai jamais remarqué cette fonctionnalité. Très sympa. :) – Jamo