|
어느 순간 부터인지 소스코드 상의 예외 처리가 이상해져 버렸습니다.
새로운 프로젝트를 생성하고, 단순히 아래와 같은 코드로 테스트 할 때도
예외 발생후에 catch 문에서 제대로 예외를 못받습니다.
WinMain의 catch 문에서도 잡히질 않고, Application->OnException으로만
예외가 받아지네요.
IDE에서 실행, 디버그 컴파일 실행, 릴리즈 컴파일 실행 모두 마찬가지 입니다.
다만, __finally 문은 제대로 실행이 됩니다.
void __fastcall TMainForm::Button1Click(TObject *Sender)
{
try
{
throw Exception("Exception Test");
}
catch(const Exception &E)
{
ShowMessage("Exception:"+E.Message);
}
}
//---------------------------------------------------------------------------
코드안에 추가로 std::exception 예외를 던졌을 때는 정상적으로 예외를
받습니다.
#include <stdexcept>
void __fastcall TMainForm::Button2Click(TObject *Sender)
{
try
{
throw std::domain_error("std::exception test");
}
catch(const std::exception &e)
{
ShowMessage("std::exception:"+AnsiString(e.what()));
}
}
//---------------------------------------------------------------------------
이리저리 해보고, 디버깅 옵션을 일일이 On/Off 해봐도 도저히 원인을 알 수 가 없네요.
하도 이상해서 빌더를 삭제하고, 디렉토리 및 설정 다 지우고 다시 설치해봤는데도
마찬가지 입니다
더더욱 이상한것은 기존에 작성해 놨던 다른 프로젝트의 소스코드는 정상적으로
컴파일/동작하더군요.
도저히 무엇이 문제인지 모르겠습니다. ㅜ.ㅜ
|