[c++] C++17에서의 예외 처리 개선

C++17은 기존의 예외 처리 메커니즘을 개선하여 코드 작성을 보다 효율적으로 만들어줍니다. 이번 포스트에서는 C++17에서의 예외 처리 개선 사항을 살펴보고자 합니다.

[[C++17 예외 처리 개선]]

C++17에서는 두 가지 주요 예외 처리 개선이 이루어졌습니다.

이제 해당 개선 사항에 대해 자세히 알아보겠습니다.

예외 포함 선언

C++17부터는 함수가 발생시킬 수 있는 예외를 함수명() [[예외 타입]] 과 같은 형식으로 명시적으로 선언할 수 있습니다. 이를 통해 코드의 가독성을 향상시키고 어떤 예외를 처리해야 하는지 명확하게 알 수 있습니다.

void someFunction() [[noreturn]] {
    // 예외 발생 시 noreturn 키워드를 통해 이 함수가 예외를 반환하지 않음을 명시
    // 예외 처리 로직
}

위와 같이 [[noreturn]]과 같은 예외 타입을 명시함으로써 함수가 예외를 발생시킨다는 사실을 명시적으로 알려줄 수 있습니다.

동적 예외 명세

C++17에서는 noexcept 키워드를 사용하여 함수가 예외를 발생시키지 않음을 명시할 수 있습니다. 또한 std::uncaught_exceptions()를 통해 현재 처리 중인 예외가 있는지를 확인할 수 있습니다.

void someFunction() noexcept {
    // 예외 발생 시 아무것도 하지 않음
}

위 예제에서 noexcept 키워드를 사용하여 해당 함수가 예외를 발생시키지 않음을 명시하고 있습니다.

이와 같은 C++17의 예외 처리 개선을 사용하면 코드의 가독성을 향상시키고 예외 처리를 보다 효율적으로 할 수 있습니다.

이상으로 C++17에서의 예외 처리 개선에 대해 알아보았습니다.

참고 자료