vc2008 에서 try catch에 관해..
반월
2023.04.01
#include stdafx.h
int _tmain(int argc, _TCHAR* argv[]){ int a =2, b=0;
try{ a= a/b; }catch(...){ } return 0;}
간단한 예외처리 문장입니다.그런데 vc2008에서는 이 예외를 캐치 못하더군요.. 뭐가 문제인지 알고싶습니다.
-
으뜸
vc 6.0에서는 정상적으로 캐치가 됩니다. vc2008에서는 안되는 상황이구요.
-
에드워드
나누기 하기면에 if문으로 b가 0이면 throw하면 됩니다
-
해늘
아 죄송합니다 발생시켜주네요
{}를 리턴전에 한번 쓰셔서 리턴이 안되는 거였네요 -
알찬바로
0으로 나누는 에러는 잡아주는 걸로 알고있습니다. 실제 컴파일러상에서도 디버깅하면 Unhandled exception at 0x004113da in test3.exe: 0xC0000094: Integer division by zero. 라는 메시지를 출력하구요.
-
은G
컴퓨터는 똑똑한것 같지만 실제론 무식합니다..
b에 0이 들어가면 안되믄 이유는 컴퓨터에겐 없습니다
int형 변수에 0이 들어가도 되는건 당연하니깐요
저런건 작성자가 미리 판단해서 던져야 됩니다
컴파일러가 알아서 예외를 판단하지 않습니다 -
알버트
저런 예외는 자동적으로 try에서 잡아주는거 아닌가요?
-
Glisten
throw 로 예외를 던져야 catch가 됩니다