[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에서의 예외 처리 개선에 대해 알아보았습니다.