nothrow(C++)

Microsoft 전용

__declspec 함수 선언에 사용할 수 있는 확장 특성입니다.

구문

return-type__declspec(nothrow) [call-convention] function-name ([argument-list])

설명

모든 새 코드는 .가 아닌 __declspec(nothrow)연산자를 noexcept 사용하는 것이 좋습니다.

이 특성은 컴파일러에게 선언한 함수와 이 함수가 요청한 함수들이 예외를 throw하지 않도록 명령합니다. 그러나 지시문을 적용하지는 않습니다. 즉, 또는 모드(Visual Studio 2017 버전 15.5 이상)throw()와 달리 std:c++17noexcept호출되지 않습니다std::terminate.

이제 기본값인, 동기 예외 처리 모델을 이용하여 컴파일러는 해제할 수 있는 특정 개체의 수명 추적 메커니즘을 제거할 수 있으며, 코드 크기를 크게 줄일 수 있습니다. 다음 전처리기 지시문을 감안할 때 아래의 세 가지 함수 선언은 모드에서 /std:c++14 동일합니다.

#define WINAPI __declspec(nothrow) __stdcall

void WINAPI f1();
void __declspec(nothrow) __stdcall f2();
void __stdcall f3() throw();

모드 throw() 에서는 /std:c++17 함수에서 예외가 throw될 경우 호출되므로 사용하는 __declspec(nothrow)std::terminate 다른 모드와 동일하지 않습니다.

선언은 void __stdcall f3() throw(); C++ 표준에 정의된 구문을 사용합니다. C++17 throw() 에서는 키워드(keyword) 더 이상 사용되지 않습니다.

Microsoft 전용 종료

참고 항목

__declspec
noexcept
키워드