エラーメッセージを示すダイアログの表示の制御

アプリケーションの実行中にエラーが発生したとき、エラーを示すダイアログが表示されて、処理が中断してしまいます。

エラーダイアログの表示を抑制する方法を紹介します。

(1) System.NoErrMsg

System.NoErrMsgは、実行時エラーの際にアプリケーションがエラーメッセージを表示するかどうかを示すグローバル変数です。
初期値はFalseになっていますが、Trueにするとメッセージは省略されます。

(2) TApplication.OnException

TApplication.OnExceptionは、未処理の例外が起こった際に呼び出される関数です。
初期値ではTApplication.ShowExceptionメソッドを呼び出して、補属されなかった例外をメッセージボックスに表示します。

TApplication.OnExceptionに別の処理を行う関数を代入することで、メッセージボックスを表示しないようにできます。

次のコードはボタンを押すと「ゼロによる除算」例外が発生します。
例外が発生すると、Application.OnExceptionに代入したExceptionEvent関数が呼び出され、例外のメッセージがメモコンポーネントに表示されます。

procedure TForm1.Button1Click(Sender: TObject);
var
  I, J: Integer;
begin
  I := 0;
  J := 1 div I;
end;

procedure TForm1.ExceptionEvent(Sender: TObject; E: Exception);
begin
  Memo1.Lines.Add(E.Message)
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnException := ExceptionEvent;
end;

OnException

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください