web-dev-qa-db-ja.com

Delphiで例外を発生させる方法は?

Prism(net)ではなく、Delphiネイティブを求めています。

これは私のコードです:

raise Exception.Create('some test');

宣言されていないイデニファイア「例外」。

問題はどこにありますか?どのようにして例外をスロー/発生させますか?

25
Ivan Prodanov

例外クラス「Exception」はユニットSysUtilsで宣言されています。したがって、uses節に「SysUtils」を追加する必要があります。

uses
  SysUtils;

procedure RaiseMyException;
begin
  raise Exception.Create('Hallo World!');
end;
66

SYSUTILSを使用単位に追加することを忘れないでください。

また、カテゴリ、メッセージの形式、例外の意味を追跡するための良い方法を提案します。

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

これを使用する簡単な方法は次のとおりです。

TMyException.RaiseError1(123);
11
Marco

Sysutilsをuses句に追加する必要がある場合があります。sysutilsは組み込みではなく、簡単に言うとDelphiによるとオプションです。

7
RobS

あなたはSysUtilsを使用していますね?例外はそこでIIRCで宣言されています。

5
Will