■通常のエラー処理
try
//処理
except
on E: Exception do
begin
Messagebox.ShowMessage('異常終了' + e.Message);
end;
end;
■データベース関連のエラー処理
try
//処理
except
on Err: EOracleError do
begin
OracleSession1.Rollback; //ロールバック
MessageDlg(Err.Message, mtError, [mbOK], 0);
Exit;
end;
end;
※この書き方だと、DB以外のエラー(例えば数値計算のエラー発生時等)に例外として拾ってくれない。
そういう意味では最初のものが無難。
■終了処理を付加するパターン
try
try
//処理
except
on Err: EOracleError do
begin
OracleSession1.Rollback; //ロールバック
MessageDlg(Err.Message, mtError, [mbOK], 0);
Exit;
end;
end;
finally
odtWork.Close //TOracleDataSetのクローズ処理など。
end;
※finallyを書く場合、javaとは違い各々try句を入れ子にする必要がある(うっとおしい!)
■わざと例外を手軽に発生させる例
var
iTest: integer;
begin
iTest := 0;
sMsg := IntToStr(10 div iTest);
~
→例外発生時の挙動を確認するのに使える。
■強制的にエラーを発生させる
raise Exception.Create('エラー発生');