人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

C++Builder5でアプリケーションを作成しています。アプリケーションで例外が発生(たとえば、AccessViolationなど)した際にエラーメッセジーを表示するダイアログが出ますが、このメッセージを任意に設定することは可能なのでしょうか?

●質問者: tecra
●カテゴリ:コンピュータ
✍キーワード:C++Builder アプリケーション エラー ダイアログ メッセ
○ 状態 :キャンセル
└ 回答数 : 1/1件

▽最新の回答へ

1 ● aki73ix

可能です

まず、Headerに例外処理の関数を定義します

class TForm1 : public TForm

{

__published:// IDE 管理のコンポーネント

        TButton *Button1;

        void __fastcall FormCreate(TObject *Sender);

        void __fastcall Button1Click(TObject *Sender);

private:// ユーザー宣言

public:// ユーザー宣言

        __fastcall TForm1(TComponent* Owner);

  void __fastcall AppException(TObject *Sender,Exception *E);

};


コンポーネントの生成時などで関数のイベントハンドラを定義します

__fastcall TForm1::TForm1(TComponent* Owner)

        : TForm(Owner)

{

   Application->OnException=AppException;

}

エラー処理の一例です、E->ClassName()の値によって分岐させればメッセージをかえることが出来ます

この例では致命的エラーでプログラムを終了するか続行するか決めることが出来ます

void __fastcall TForm1::AppException(TObject *Sender,Exception *E)

{

  char str[512];

  wsprintf(str,"Crash Agent:¥015致命的エラー。終了させますか?¥015%s(%s)¥015Error Class:%s"

    ,E->Message,E->ClassName().cpychr(),Sender->ClassName().cpychr());

  if(mrOk==MessageBox(Handle,str,"Custom Error",MB_OKCANCEL|MB_ICONINFORMATION))

     Application->Terminate();

}

注意しなくてはならないのは、関数の途中で例外が発生した場合に、その関数の途中から開始することは出来ないことです

参考

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ