私はPascalScriptのinnosetupインストーラを使っています。次のブロックの制御がどこに流れているのか分かりません。Pascal(スクリプト)と例外制御フロー
function Foo(): String;
begin
Result := 'foo';
RaiseException('...');
end;
procedure Test();
var
Z : String;
begin
Z := '';
try
Z := Foo();
except
Log(Z);
end
end;
私のインストーラがZ
がFoo
機能のResult
で設定されていることを示しているようです。私が「ほとんどの」プログラミング言語で例外を理解すると、例外の場合にはZ := Foo()
という代入が行われてはならないことがわかります。
Foo
関数が呼び出されたときには、Z
はまだ割り当てられていますか?
@MartinPrikryl:そうです。私は手書きの例とプロダクションコードを手に入れました。私はそれをコンパイルして実行しました。 – xtofl