C++ try/catch
Posted 2006. 9. 9. 10:22보통 C++ 코딩을 잘 안하는데, 이번에 M 회사 프로젝트하면서 리눅스에서 C++로 어플리케이션을 개발하게 되었습니다. 그래도 C와는 다르게 try/catch를 통한 예외 처리를 할 수 있어서 좋았습니다. 그런데 오랫동안 자바 코딩을 해와서 그런지 다음과 같은 실수를 저질렀습니다.
<예제>
이상하게 catch가 안 되길래 봤더니 C++의 경우 throw Exception()을 써야했던 것이더군요.C++은 throw로 던질 수 있는 타입에 제한이 없다는 점이 문제였습니다. 자바를 비롯한 여러 언어는 최상위 예외클래스(자바의 경우 java.lang.Throwable)이 존재하는데 비해서, C++은 throw 1 같이 primitive타입까지 던질 수 있는 것이죠.
<수정>
<예제>
int foo()
{
throw new Exception();
}
...
try {
foo();
} catch (Exception& e) {
}
{
throw new Exception();
}
...
try {
foo();
} catch (Exception& e) {
}
이상하게 catch가 안 되길래 봤더니 C++의 경우 throw Exception()을 써야했던 것이더군요.C++은 throw로 던질 수 있는 타입에 제한이 없다는 점이 문제였습니다. 자바를 비롯한 여러 언어는 최상위 예외클래스(자바의 경우 java.lang.Throwable)이 존재하는데 비해서, C++은 throw 1 같이 primitive타입까지 던질 수 있는 것이죠.
<수정>
int foo()
{
throw Exception();
}
...
try {
foo();
} catch (Exception& e) {
}
{
throw Exception();
}
...
try {
foo();
} catch (Exception& e) {
}
- Filed under : 카테고리 없음
- Tag : C++, 예외처리
- 0 Comments