こんにちは
こんな感じのプログラムを
-----------------------------------
try
:
if ・・・ then <<エラー処理>>
if ・・・ then <<エラー処理>>
:
except
<<エラー処理>>
end;
-----------------------------------
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
実際にはコンパイルすらできませんが
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
-----------------------------------
label ErrorProcess;
begin
try
:
if ・・・ then goto ErrorProcess;
if ・・・ then goto ErrorProcess;
:
except
ErrorProcess:
<<エラー処理>>
end;
:
end;
-----------------------------------
要するに同じエラー処理の部分は
一つにまとめたいというものなんですけど
初歩的なことですみません。
以下の様に無理やり例外発生させれば可能ですが、
すっきりいかなくって・・・
-----------------------------------
var
a,b: Integer;
try
a := 0;
:
if ・・・ then b := b / a;
if ・・・ then b := b / a;
:
except
<<エラー処理>>
end;
raiseを使用してください。
こんな感じでしょうかね。
try
if ... then raise Exception.Create('1');
if ... then raise Exception.Create('2');
except
on e: Exception do
begin
if e.message = '1' then ...
end;
end;
ありがとうございます。
ところで、Create に対する Free および Destroy
は必要ないのでしょうか?
例外が適切に処理されていれば、自動的に呼び出されます。
EHantei=class(Exception)
public
destructor Destroy; override;
end;
destructor EHantei.Destroy;
begin
ShowMessage('EHantei.Destroy');
inherited Destroy;
end;
というような例外クラスを作成して確認しました。
Exception.Createのかわりに、EHantei.Createしてみると解ります。
except処理が終了すると、破棄されています。
kkk さん にしの さん
うまくいってるようです。
ありがとうございました。
ツイート | ![]() |