C++는 C++ 표준 라이브러리의 함수가 실행될 때 예외를 발생시키는 데 사용되는 표준 예외 처리 클래스를 제공합니다. C++에서 제공하는 표준 예외 클래스의 계층 구조는 다음과 같습니다.
모든 예외 클래스는 예외 클래스 아래의 Logic_error 및 Runtime_error가 상대적으로 큰 두 가지 범주로, 여러 자체 클래스를 포함하여 논리 오류 와 런타임 오류를 나타내는 테이블로 구분되어 있음을 알 수 있습니다.
다음과 같은 예를 들어보세요.
1. new를 사용하여 메모리를 열 때 공간이 부족하면 bad_alloc 예외가 발생합니다.
2. Dynamic_cast()를 사용하여 동적 유형 변환을 수행하고 실패하면 bad_typeid 예외가 발생합니다.
3. 계산된 값이 유형으로 표시되는 최대 범위를 초과하면 Overflow_error 예외가 발생하여 작업 오버플로를 나타냅니다. 마찬가지로 underflow_error는 작업 언더플로를 나타냅니다.
4. 문자열 클래스 첨자를 사용했지만 범위를 벗어나면 out_of_range 예외가 발생합니다.
잠깐...잠깐만...자세한 내용은 직접 알아보세요.
C++에 포함된 표준 예외 클래스를 사용할 때 해당 헤더 파일을 포함해야 한다는 점에 유의해야 합니다. 예외 및 bad_Exception 클래스는 헤더 파일 예외에 정의되어 있고, bad_alloc 클래스는 헤더 파일 new에 정의되어 있기 때문입니다. bad_typeid 클래스는 헤더 파일 typeinfo에 정의되어 있고, ios_base::failure 클래스는 헤더 파일 ios에 정의되어 있으며, 다른 예외 클래스는 stdException에 정의되어 있습니다.
아래에서는 C++ 표준 예외 클래스를 사용하는 방법을 보여 드리겠습니다.
#include<iostream>#include<new>#include<stdException>usingnamespacestd;//예외 처리 intmain(){string*s;try{s=newstring(www.dotcpp.com);cout<<s->substr( 15,5);}catch(bad_alloc&t){cout<<예외 발생:<<t.what()<<endl;}catch(out_of_range&t){cout<<예외 발생:<<t.what()<<endl;} 반환0;}
실행 결과는 다음과 같습니다.
직접 사용해보고 사용법을 배워보세요!