[c++] 런타임 오류와 예외 처리

C++ 프로그램을 실행 중에 발생하는 런타임 오류는 프로그램의 예기치 않은 동작을 일으키기도 하며, 이를 처리하지 않으면 프로그램이 비정상적으로 종료될 수 있습니다. 이번에는 C++에서 발생하는 일반적인 런타임 오류와 이에 대한 예외 처리 방법에 대해 알아보겠습니다.

종류

1. 분할 by zero (나누기 0)

‘나눗셈 연산에서 0으로 나누기’는 가장 흔한 런타임 에러 중 하나입니다. 0으로 나눌 경우, 프로그램은 정수형의 경우 런타임 오류를 일으키며, 부동 소수점의 경우 INF (무한대)나 NaN (숫자가 아님)을 반환합니다.

2. 배열 경계 초과 (Out of Bounds)

배열 경계 초과는 유효하지 않은 배열 인덱스로 인해 발생하는 런타임 오류입니다. 이는 배열에 접근할 때 범위를 벗어난 인덱스를 사용할 때 발생합니다.

3. NULL 포인터 참조

NULL로 초기화되지 않은 포인터를 참조할 때 발생하는 런타임 오류입니다.

예외 처리

C++에서 런타임 오류를 처리하기 위해 try, catch, throw, finally와 같은 예외 처리 기능을 제공합니다. 아래는 예외 처리를 위한 간단한 예제 코드입니다.

try {
    // 예외 발생이 예상되는 코드 블록
    if (조건) {
        throw "예외 메시지"; // 예외 발생
    }
} catch (const char* msg) {
    // 발생한 예외를 처리하기 위한 코드 블록
    std::cerr << "예외 발생: " << msg << std::endl;
} catch (...) {
    // 모든 예외를 처리하기 위한 코드 블록
}

위 코드에서 try 블록 내에서 예외가 발생하면, 해당 예외를 캐치하여 적절히 처리할 수 있습니다.

결론

C++에서 런타임 오류는 프로그램의 안정성과 정확성에 영향을 미칠 수 있으므로, 적절한 예외 처리를 통해 이를 처리하는 것이 중요합니다.

참고 자료