int f(); // can throw any exception
A function that will throw no exceptions can be declared with an empty list:
int g() throw(); // no exception thrown
--The c++ programming language -special edition, 376p
이것은 Exception Specification(한국어판 More Effective C++에서는 '예외 지정'으로 번역했습니다.)이란 것으로, JAVA에서의 의미와 거의 동일한 겁니다.
C++에서 예외 관련 문법이 표준안에 들어간 것이 1994년이니까,
JAVA 1.0이 나온 1995년보다도 이전이지요.
이에 대한 내용은 More Effective C++의 Item 14에 있습니다.
이 책에 따르면, 예외 지정 기능은 문서화에 상당한 도움을 주는 기능이지만, 예외 지정을 어기면 무조건, 디폴트로 terminate() 즉, abort()를 호출하여 프로그램이 바로 종료되어 버리는 문제점이 있기 때문에(물론 피해갈 수 있는 방법은 있습니다만, 약간의 귀찮은 타이핑을 필요로 하죠. :? ), 완벽할 수 있는 자신이 없는 한 사용하지 않는 것을 권장하고 있습니다. 그래서인지 C++에서는 잘 사용하지 않습니다.
more effective c++ 에서 얼핏본거 같네요 (item 14)
more effective c++ 에서 얼핏본거 같네요 (item 14)
예외 명세라고 하던데..
공부를 안해서 사실 잘모르겠습니다;;
int f(); // can throw
int f(); // can throw any exception
A function that will throw no exceptions can be declared with an empty list:
int g() throw(); // no exception thrown
--The c++ programming language -special edition, 376p
예, C++ 표준 맞습니다.
이것은 Exception Specification(한국어판 More Effective C++에서는 '예외 지정'으로 번역했습니다.)이란 것으로, JAVA에서의 의미와 거의 동일한 겁니다.
C++에서 예외 관련 문법이 표준안에 들어간 것이 1994년이니까,
JAVA 1.0이 나온 1995년보다도 이전이지요.
이에 대한 내용은 More Effective C++의 Item 14에 있습니다.
이 책에 따르면, 예외 지정 기능은 문서화에 상당한 도움을 주는 기능이지만, 예외 지정을 어기면 무조건, 디폴트로 terminate() 즉, abort()를 호출하여 프로그램이 바로 종료되어 버리는 문제점이 있기 때문에(물론 피해갈 수 있는 방법은 있습니다만, 약간의 귀찮은 타이핑을 필요로 하죠. :? ), 완벽할 수 있는 자신이 없는 한 사용하지 않는 것을 권장하고 있습니다. 그래서인지 C++에서는 잘 사용하지 않습니다.
댓글 달기