[c++] noexcept와 함수의 예외 사양

C++11부터 예외 사양을 선언하는 데 사용되는 noexcept 키워드가 도입되었습니다. 이 키워드는 함수가 예외를 발생시키지 않음을 나타내는 데 사용됩니다. 또한, noexcept 사양을 지정함으로써 컴파일러에게 해당 함수가 예외를 발생하지 않는다는 정보를 제공할 수 있습니다.

noexcept 예약어를 사용하는 방법

noexcept 키워드는 함수 선언 시 함수 이름 뒤에 붙어 사용됩니다. 아래는 noexcept를 사용하는 간단한 예제입니다.

void myFunction() noexcept {
    // function body
}

noexcept 사양과 이점

noexcept를 사용하면 컴파일러가 최적화를 수행할 수 있습니다. 또한, 이 예약어를 사용하여 예외 사양을 명시적으로 지정함으로써 코드의 안정성을 높일 수 있습니다. noexcept 키워드를 사용함으로써 함수가 예외를 발생시키지 않는다는 사실을 명시적으로 나타내어 사용자가 해당 함수를 호출할 때 예외 처리에 대한 고려를 덜어줄 수 있습니다.

noexcept와 예외 사양

함수의 예외 사양은 throw() 사양과 noexcept 사양으로 지정할 수 있습니다. throw() 사양은 C++11에서부터 사라지고, noexcept 사양이 그 역할을 대신하게 되었습니다. 기존의 throw() 사양과 달리 noexcept는 예외를 발생시키지 않는다는 사실을 보장합니다.

noexcept의 주의점

noexcept 키워드를 사용할 때에는 함수 내부에서 예외를 발생시키지 않음을 확실하게 보장해야 합니다. 만약 noexcept로 지정된 함수에서 예외가 발생한다면 std::terminate가 호출되어 프로그램이 끝나게 됩니다.

이상으로 noexcept 키워드와 함수의 예외 사양에 대한 간단한 소개를 마치겠습니다.

References