Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++에서 예외를 발생시키는 방법 – throw 키워드와 try-catch 활용법

예외 처리(Exception Handling)는 프로그램 실행 중 발생할 수 있는 비정상적인 상황을 안전하게 처리하기 위한 핵심 메커니즘입니다. C++에서는 try-catch 블록을 사용해 코드를 보호할 수 있으며, 코드 블록 내 어디에서든 예외를 발생시킬 수 있습니다. 이때 예외를 던지는 데 사용되는 키워드가 바로 throw입니다.

예외 처리의 기본 동작 원리

C++의 예외 처리는 다음 세 가지 요소로 구성됩니다.

  • try 블록: 예외가 발생할 가능성이 있는 코드를 감싸는 영역입니다.
  • throw: 문제가 감지되면 예외를 던집니다. 문자열, 숫자 등 어떤 타입이든 예외로 사용할 수 있습니다.
  • catch 블록: 던져진 예외를 받아 적절한 후속 처리를 수행합니다.

C++ throw 예제 코드

다음은 0으로 나누려는 상황에서 예외를 발생시키는 C++ 예제입니다.

#include <iostream>
using namespace std;

int display(int x, int y) {
    if( y == 0 ) {
        throw "Division by zero condition!";
    }
    return (x/y);
}

int main () {
    int a = 50;
    int b = 0;
    int c = 0;

    try {
        c = display(a, b);
        cout << c << endl;
    } catch (const char* msg) {
        cerr << msg << endl;
    }
    return 0;
}

실행 결과

위 코드를 컴파일하여 실행하면 다음과 같은 출력이 나타납니다.

Division by zero condition!

코드 동작 설명

display() 함수는 두 번째 인자가 0인 경우 문자열 형태의 예외를 throw합니다. main() 함수의 try 블록에서 이 함수를 호출하는데, 여기서 예외가 발생하면 나눗셈 결과를 출력하는 코드는 건너뛰고 즉시 catch(const char* msg) 블록으로 제어가 넘어갑니다. catch 블록은 전달받은 오류 메시지를 표준 에러 스트림(cerr)에 출력한 뒤, 프로그램은 정상적으로 종료됩니다.

이처럼 throwtry-catch를 조합하면 0으로 나누기 같은 런타임 오류를 프로그램 전체의 비정상 종료 없이 우아하게 처리할 수 있습니다.