Try ブロックの記述
保護ブロックの定義 への移動
protected ブロックの最初の部分は、try ブロックです。 try ブロックには、例外を発生させる可能のあるコードを入れます。 例外は、try ブロック内で直接発生させることも、try ブロック内の文によって呼び出されるコードによって発生させることもできます。 つまり、try ブロック内のコードが、自分自身で例外ハンドラを定義していないルーチンを呼び出した場合、そのルーチン内で発生したいずれの例外も、処理実行を try ブロックに関連付けられている例外ハンドラに渡します。 例外は、開発者のコードからのみ生成されるわけでない点に留意しておいてください。 RTL ルーチンやアプリケーション内の別のコンポーネントへの呼び出しも、例外を発生させる可能性があります。
次の例では、TFileStream オブジェクトから発生した例外を補足している様子を表しています。
procedure TForm1.Button1Click(Sender: TObject);
var
fileStream: TFileStream;
begin
try
(* Attempt to open a non-existant file *)
fileStream := TFileStream.Create('NOT_THERE.FILE', fmOpenRead);
(* Process the file contents... *)
fileStream.Free;
except
on EFOpenError do ShowMessage('EFOpenError Raised');
else
ShowMessage('Exception Raised');
end;
end;
try ブロックを使用することにより、コードが読みやすくなります。プログラム中にエラー処理コードを散在させる代わりに、例外ハンドラを隔離し、コードのアルゴリズムの流れがより明確になるようにできます。
これは特に、何百ものステップを伴い、その中の 1 つでも不正な入力があるとステップのいずれかがエラーを起こすような、複雑な計算を実行する際には、特に有効でしょう。例外を使用することにより、アルゴリズムの正常時の式を記述し、それから、それが適用されない例外の場合について記述することができます。例外を使用しないと、計算の各ステップを確実に進めるために、毎回チェックを行わなければなりません。
try ブロック内のコードからの例外発生に関する詳細については、「例外の生成」を参照してください。