[c++] noexcept와 예외 명시의 차이

C++에서 예외 처리에 대한 명시는 프로그래머가 함수에서 발생할 수 있는 예외를 명시하는 방법입니다. noexcept와 예외 명시의 차이를 이해하기 위해, 먼저 각각의 기능과 사용 방법에 대해 알아보겠습니다.

noexcept

noexcept는 C++11에서 도입된 키워드로, 해당 함수가 예외를 발생시키지 않음을 나타냅니다. 이렇게 표시된 함수가 예외를 발생시키지 않음이 보장되면, 컴파일러는 예외 처리 코드를 생성하지 않아도 됩니다. 또한, noexcept 키워드가 붙은 함수는 호출자가 예외 처리를 하지 않아도 된다는 것을 나타냅니다.

noexcept는 다음과 같이 사용됩니다:

void func() noexcept {
    // 예외를 발생시키지 않는 함수 내용
}

예외 명시

예외 명시는 함수가 발생시킬 수 있는 예외의 종류를 나열하는 것입니다. 이는 함수가 특정 종류의 예외를 발생시킬 수 있음을 호출자에게 알려줍니다. 이 정보를 통해 호출자는 적절한 예외 처리를 수행할 수 있습니다.

void func() throw(std::bad_alloc) {
    // std::bad_alloc 예외를 발생시킬 수 있는 함수 내용
}

noexcept와 예외 명시의 차이점

따라서, noexcept는 함수가 예외를 발생시키지 않음을 나타내는 반면, 예외 명시는 함수가 발생시킬 수 있는 예외의 종류를 나타냅니다.

이러한 차이를 이해하면, 각각의 상황에 적절한 방법을 사용하여 프로그램을 보다 안정적으로 만들 수 있을 것입니다.

참고 자료