2009-11-30 5 views
2

try/catch 블록의 부족을 오류로 처리하는 gcc (g ++)에 컴파일러 매개 변수가 있는지 궁금합니다. 이것은 자바의 표준 동작이며 나는 항상 그것을 좋아했다.C++ 컴파일러가 예외 처리를 확인하도록 강요합니다.

+2

아니요, 컴파일시에 정확히 어떤 함수가 호출 될지 알 수 없으므로 기본적으로 표준의 설계에서는 불가능합니다. –

+1

주요 기능을 찾습니다. try-catch 블록에 모든 것을 넣으십시오. 오류 없음. :) (전역 변수를 만드는 동안 예외가 발생하면 어떻게 될지 궁금합니다.) – UncleBens

답변

8

자바에서 체크 된 예외가 throw 서명에 의존하기 때문에 당신이 SO에 this question에서 C++에서 throw 기능 서명을 사용하지 않습니다 이유를 읽을 수 있습니다.

0

예외가있는 C++에서 할 일은 사용 기능의 예외 사양입니다. 즉 적극적으로 그 함수에서 발생되는 비상장 예외를 방지하지 않습니다,하지만 그 오류하게 (그리고 미리 정의 된 unexpected()에 모두 매핑합니다.

을 그래서 int f() throw();는 C++의에서 제기되고 예외 치료 "입니다 오류 "로 함수 f

는, 예외 사양을 사용하는 것은 일반적으로 좋은 생각
+1

아마도 "_runtime_ error"로 처리 할 가치가 있습니다. C++ 컴파일러는 여전히'void foo()'를 컴파일하는 데있어 _required_입니다. throw() {throw 42; }'. –

1

글쎄 :. http://cplusplus.co.il/2009/10/06/exception-specifications/

그리고 이것들을 사용하지 않을 경우, 컴파일러는 기본적으로 던져 질 수있는 예외 알 수있는 방법이 없기 때문에 더있다 그 방법.

당신이 할 수있는 일은 std :: terminate (std :: set_terminate() 호출)의 구현을 제공하고 거기에 캐치되지 않은 예외를 처리하는 것입니다.

관련 문제