web-dev-qa-db-fra.com

Comment lever des exceptions dans Delphi?

Je demande Delphi natif, pas Prism (net).

Voici mon code:

raise Exception.Create('some test');

Identifiant non déclaré "Exception".

Où est le problème, comment lancer/lever des exceptions?

25
Ivan Prodanov

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;
66
Andreas Hausladen

N'oubliez pas d'ajouter SYSUTILS à vos unités d'utilisation.

Je vous suggère également une belle façon de garder une trace des catégories, des formats de messages et de la signification de l'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 manière simple d'utiliser ceci est:

TMyException.RaiseError1(123);
11
Marco

Vous devrez peut-être ajouter des sysutils à la clause uses, elle n'est pas intégrée et est facultative selon Delphi en bref.

7
RobS

Vous utilisez SysUtils, n'est-ce pas? Une exception y est déclarée IIRC.

5
Will