void __fastcall TBaseWindow::Button1Click(TObject *Sender)
{
int a,b;
a = 5 ;
b = 0 ;
try {
ShowMessage(IntToStr(a/b));
}
catch (...)
{
ShowMessage("Exception");
}
}
실행 파일 탐색기에서 실행시켜서 테스트해봐도...
(즉, F9 로 빌더 내에서 실행한것이 아닙니다)
예외 처리가 되지 않고, Division by Zero 라는 에러가 뜹니다.
그러나, Debug 모드로 컴파일에서 실행 파일을 실행 시켜보면,
제대로 "Exception" 이라는 메세지가 뜹니다. (예외 처리 성공)
(꼭 풀디버그 모드 아니라도, Disable inline expansions 에
체크가 되어 있으면 제대로 예외 처리 됩니다)
또 웃긴 것은
try {
} 안에
int a = 5;
int b = 0; 를 선언하면 '릴리즈' 모드에서도 문제가 없이 예외 처리 됩니다.
도대체 왜~!?
이런 현상이 생기는 걸까요?
아악. 고통스럽습니다. 짐작가시는 분 좀 조언 부탁드립니다.
|