[부트캠프] C++ - 예외 처리(Exception Handling)

Claire·2024년 9월 2일

예외처리(Exception Handling)

정의

사전적 의미로 일반 규칙에서 벗어남을 의미하며, 프로그래밍 상에서는 프로그램 실행중에 에러를 발생시킬 가능성을 가지고 있는 코드를 의미한다.

에외는 컴파일 및 오류도 없지만 사소한 부주의로 원치 않는 결과를 가져오게 하기 때문에, 이러한 예외 상황을 적절히 처리해주는 것을 예외 처리(Exception Handling)이라 한다.

예외 상황이 발생하는 이유

  1. 네트워크 접속 불량
  2. 하드디스크 섹터 불량
  3. 유효하지 않는 메모리 접근
    (동일한 메모리 주소값을 가리키는 상황에서 해당 주소값을 2번 삭제하려고 시도하는 경우 등)
    등이 대표적이다.

기본 구문(C++ 메커니즘을 이용한 예외 처리 기본 구조)

C++ 예외 처리 언어 차원에서 지원하는 기법/구조

  • Try: 예외 가능성이 있는 코드 영역을 처리하며, 이 블록에서 예외가 발생하면 throw 명령으로 예외를 넘김
  • catch: 예외 발생 시 예외를 잡아서 처리한다.
  • throw: 예외를 처리하는 구문으로 던진다. (= catch문으로 이동)

기본 구문

try {
	//예외 가능성이 있는 코드 영억
    if(예외 조건) throw 예외 객체
}
catch(예외 객체){
	//예외 발생에 처리할 영역
}
try-catch를 이용한 예외처리 예제 코드(+다중 예외 처리)
void main() {
int a = 0;
int b = 0;

cout << "나누어질 수 입력: ";
cin >> a;
cout << "나누는 수 입력: ";
cin >> b;
try {
	if (a < 0) throw "나누어질 수가 음수";
	if (b == 0) throw b;
	cout << "나누기 결과: " << a / b << endl;
}
catch(int exp) {
	cout << "나누는 수가 0입니다." << endl;
}
catch (const char* exp) {
	cout << exp << endl;
  }
}

예제 코드를 살펴보면 알 수 있듯이, 예외처리는 다중처리가 가능하다.

함수 안에서 예외 처리하기

함수 안에서 예외가 발생해도 try...catch를 이용해서 예외 처리가 가능하다

함수 안에서 예외처리
// 함수 안에서의 예외 처리
void Divide(int x, int y) {
	if (y == 0) throw y;
	cout << "나누기 결과: " << x / y << endl;
}

void main() {
	int a = 0;
	int b = 0;

	cout << "나누어질 수 입력: ";
	cin >> a;
	cout << "나누는 수 입력: ";
	cin >> b;

	try {
		Divide(a, b);
	}
	catch (int exp) {
		cout << "나누는 수: " << exp << endl;
	}
}
profile
SEO 최적화 마크업 개발자입니다.

0개의 댓글