C++ 예외 처리 패턴

프로그램 실행 중 예기치 못한 상황이 발생했을 때 효율적으로 대처하는 방법이 예외 처리(Exception Handling)이다.

C++의 try, catch, throw를 통해 견고한 프로그램을 만드는 메커니즘을 정리했다.

에러를 처리하는 세 가지 키워드

  • throw: 문제가 발생한 지점에서 예외 객체를 전달한다.
  • try: 에러가 발생할 가능성이 있는 구역을 설정한다.
    이곳에서 발생한 예외는 시스템이 처리할 준비를 한다.

  • catch: 전달된 예외를 받아서 처리하는 구역이다.
    에러 타입에 따라 서로 다른 대처 방안을 마련할 수 있다.

RAII와 스택 풀기

C++ 예외 처리는 RAII(자원 획득은 초기화와 동시에)와 결합할 때 효과적이다.

예외가 발생해 함수를 종료할 때, 시스템은 그동안 생성된 객체들의 소멸자를 순차적으로 호출하는 ‘스택 풀기(Stack Unwinding)’를 수행한다.

이 과정에서 메모리나 파일 자원이 안전하게 해제된다.

신중하고 전략적인 사용

예외 처리는 성능 오버헤드가 발생할 수 있다.

따라서 일반적인 로직 제어보다는 실제 예외적인 상황에서만 사용하는 것이 적절하다.

특히 소멸자 안에서는 절대 예외를 던지지 말아야 한다는 원칙을 준수해야 한다.

비정상 종료를 막고 신뢰성 있는 코드를 작성하는 것이 예외 처리의 핵심인 것 같다.

Author avatar

웨이호프

WordPress creator and blogger.

View all posts