try ・・・ except 文で
発生している例外のメッセージを取得する方法および、
取得した特定の例外のときだけ特別な処理を行い
この例外を含むその他の処理に一連の処理を与える方法を
教えてください
以下イメージです。
try
<< 処理1 >>
except
if << 例えばファイルオープン例外 >> then begin
ファイルオープンの例外発生時の例外処理
end;
<< すべての例外に対する処理 >>
end;
try
...
except
on EZeroDivide do begin
//0で割ってしまったときの例外
end;
on EOverflow do begin
//オーバーフローしたときの例外
end;
else begin
//上記以外の例外
end;
end;
すみません。
else の使い方がわからなかったもので・・
このような記述をするとは考えられませんでした。
on = if のような考えで以下のように考えてました。
on <例外クラス> begin
end else on <例外クラス> begin
end else begin
end;
結局すべての例外に同じ処理(共通の例外処理)を入れる場合は
以下の方法しかないのでしょうか?
on EZeroDivide do begin
//0で割ってしまったときの例外
//共通の例外処理
end;
on EOverflow do begin
//オーバーフローしたときの例外
//共通の例外処理
end;
else begin
//共通の例外処理
end;
どうやら、同じ処理を複数にわたって、
記述しなければならないようですね。
except の後ろに
if 文も try ・・・ finally も使えないようです・・・
アマのわりに危険な発言です
> どうやら、同じ処理を複数にわたって、
> 記述しなければならないようですね。
> except の後ろに
> if 文も try ・・・ finally も使えないようです・・・
例外の上位クラスでトラップをかけて、
その中で判断すればいいだけでは?
except
on E:Exception do
begin
if E is EFOpenError then
begin
//ファイルオープンの例外発生時の例外処理
end;
//すべての例外の共通処理
end;
end;
Basser さんどうもです。
on E:Exception do begin
ですか
なるほどです。
ありがとうございました。
ツイート | ![]() |