[c++] noexcept의 기능과 제약

C++11부터 noexcept 키워드가 도입되었는데, 해당 키워드는 함수나 연산자가 예외를 발생시키지 않음을 명시하는 데 사용됩니다. noexcept는 컴파일러에게 특정 함수가 예외를 발생시키지 않을 것이라는 것을 알려주어 컴파일러가 최적화할 수 있도록 도와줍니다.

noexcept 사용하기

함수에 noexcept를 명시하는 방법은 간단합니다. 함수 이름 뒤에 noexcept를 붙여주기만 하면 됩니다.

void MyFunction() noexcept {
    // 함수 내용
}

또는 함수의 반환 타입 뒤에 noexcept를 붙일 수도 있습니다.

void MyFunction() noexcept;

noexcept의 제약

noexcept 키워드를 사용할 때에는 몇 가지 제약들을 고려해야 합니다.

  1. noexcept 함수 내에서 예외를 던지면 std::terminate가 호출되어 프로그램이 강제로 종료됩니다.
  2. noexcept 함수 내에서 noexcept가 명시되지 않은 함수를 호출하면, 해당 함수가 예외를 발생시키는 경우에는 마찬가지로 std::terminate가 호출됩니다.

결론

noexcept는 함수가 예외를 발생시키지 않을 것임을 명시하는 데 사용되며, 컴파일러에 최적화를 돕습니다. 그러나 noexcept를 사용할 때에는 예외 처리와 관련된 제약 사항들을 주의 깊게 고려해야 합니다.

참고자료

  1. cppreference.com - noexcept specifier