例外の使い方


例外を使用するとエラー処理を簡単化することができます。例えば、プログラムの中のどこか深いネストで発生した例外をまとめて1個所で処理できます。

例外処理は、try..exceptプロックを使用して記述します。次の例はファイルが見つからなかったときの処理を例外を使用して記述した例です。

program FileExcep;

uses
  SysUtils;

{$APPTYPE CONSOLE}
var
    f: Text;
    s: string;
begin
    try
	AssignFile(f, 'TEXT1.TXT');
    	Reset(f);
	Readln(f, s);
	CloseFile(f);
    except
    	on EInOutError do Writeln('ファイルを読み出せない。');
    end;

end.

 

try..finallyを使用すると例外の発生に関係なく終了コードを実行させることができます。これは、割り当てたメモリを解放させたいときなどに便利です。

program TestTryFinal;

uses
  SysUtils;

{$APPTYPE CONSOLE}
var
    buffer: Pointer;
    v: Integer;
    a, i: Integer;
begin
    GetMem(buffer, $10000);
    a := 10;
    writeln('GetMem(buffer, $10000);');
    try
        i := 0;
      	try
    	v := a mod i;
            writeln('i,v = ',i, v);
         except
	 	on EDivByZero do writeln('EDiveByZero exception.');
        end;

    finally
        FreeMem(buffer);
        writeln('FreeMem(buffer)');
    end; 
end.