|
Turbo C++로 프로그래밍 중에 동작이 이상하여 확인해 보니, 예외 처리가 안되네요.
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Application->OnException=MyExceptionHandler;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MyExceptionHandler(TObject *Sender, Exception *E)
{
if(E!=NULL)
{
AnsiString msg="MyException: "+E->Message;
Memo1->Text=msg;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
try
{
throw Exception("test exception!");
} catch(Exception& _e)
{
Memo1->Text=_e.Message;
} catch(Exception* _e)
{
Memo1->Text="pointer "+_e->Message;
} catch(std::exception& _e)
{
Memo1->Text="standard exception: "+AnsiString(_e.what());
} catch(...)
{
Memo1->Text="unknown exception!";
}
}
//---------------------------------------------------------------------------
Exception 예외를 발생시키면, catch 구문에서 예외를 처리 못하고, Applicaiton의 예외 처리 핸들러로 넘어가 버립니다.
IDE에서 Debug/Release 실행이던지, 컴파일 후 *.exe 파일을 실행하던지 동작이 같습니다.
갑자기 왜이런지 모르겠네요.
똑같은 코드를 BCB6에서 작성하면 정상적으로 예외 처리가 되네요. ㅜ.ㅜ
|