C++/C++98

C++ 표준 예외

deulee 2023. 8. 8. 21:22

C++ 표준 라이브러리는 모든 예외의 루트로 사용할 수 있는 exception이라는 클래스를 정의한다.

 

이 클래스는 별다른 기능을 가지고 있지는 않고 문자열 포인터를 리턴하는 "what"이라는 가상 함수를 제공한다. (추상 클래스)

 

표준 라이브러리는 exception으로부터 표준 예외 클래스들을 파생해 놓았고 크게 "논리 에러"와 "런타임 에러"로 나누어진다.

 

 

이 표준 예외들은 C++의 연산자들이 던지는 예외들이다.

 

대표적인 예로 다음 예시를 보도록 하자.

 

C++ 컴파일러는 new 연산자가 할당에 실패할 때 bad_alloc 예외를 발생시킨다.

#include <iostream>

int main(void)
{
	try {
		int* i = new int[100000000];
	}
	catch (std::bad_alloc& b) {
		b.what();
	}
}

물론 위의 예제는 에러를 일으키기에는 너무 적은 메모리지만 bad_alloc 예외를 던진다는 것만 알고 있으면 된다.