(Delphi) 例外の再生成について
例外の再生成のことで質問があります。
Delphi の Ini ファイルを操作するクラス TCustomIniFile には、
ReadDate や ReadFloat といったメソッドがありますが、
このメソッドのソースコードを拝見すると、例外処理を行っている部分で
EConvertError 例外以外の時は else 節の raise で同じ例外を再生成しているのですが、
この else 節は無くても同じ気がするのですが、どうしてわざわざ else 節で
キャッチした例外を再生成しているのでしょうか?
EConvertError 例外以外は例外処理しなければそのままメソッド呼び出し元に伝わりますが、
あえて raise で再生成していることに何か意図はあるのでしょうか?
以下は ReadFloat メソッドのソースコードです。
1 と 2 の部分がなくても結果は同じではないのでしょうか?
function TCustomIniFile.ReadFloat(const Section, Name: string; Default: Double): Double;
var
FloatStr: string;
begin
FloatStr := ReadString(Section, Name, '');
Result := Default;
if FloatStr <> '' then
try
Result := StrToFloat(FloatStr);
except
on EConvertError do
// Ignore EConvertError exceptions
else ←―――――――――――――― 1
raise; ←―――――――――――――― 2
end;
end;
お礼
すごい。とてもよく分りました。こんなに詳しく教えていただいてありがとうございます。お名前を見てもこの分野に精通した方だとわかります。 またわからないことがあったらよろしくお願いします。