소개
표준 예외 클래스입니다. 표준 라이브러리의 구성 요소에 의해 throw되는 모든 개체는이 클래스에서 파생됩니다. 따라서 모든 표준 예외는이 유형을 참조로 포착하여 포착 할 수 있습니다.
선언
다음은 std :: exception에 대한 선언입니다.
class exception;
예
아래의 std :: exception 예제에서.
#include <thread>
#include <vector>
#include <iostream>
#include <atomic>
std::atomic_flag lock = ATOMIC_FLAG_INIT;
void f(int n) {
for (int cnt = 0; cnt < 100; ++cnt) {
while (lock.test_and_set(std::memory_order_acquire))
;
std::cout << "Output from thread " << n << '\n';
lock.clear(std::memory_order_release);
}
}
int main() {
std::vector<std::thread> v;
for (int n = 0; n < 10; ++n) {
v.emplace_back(f, n);
}
for (auto& t : v) {
t.join();
}
}
파생 유형
Sr. 아니. |
파생 유형 |
정의 |
1 |
bad_alloc |
메모리 할당 실패시 발생하는이 예외 |
2 |
bad_cast |
이 예외는 동적 캐스트 실패시 발생합니다. |
삼 |
bad_exception |
이것은 예기치 않은 핸들러에 의해 발생한 예외입니다. |
4 |
bad_function_call |
이 예외는 잘못된 호출에서 발생했습니다. |
5 |
bad_typeid |
null 포인터의 typeid에서 throw 된이 예외 |
6 |
bad_weak_ptr |
나쁜 약한 포인터입니다. |
7 |
ios_base :: failure |
스트림 예외의 기본 클래스입니다. |
8 |
logic_error |
논리 오류 예외입니다. |
9 |
런타임 에러 |
런타임 오류 예외입니다. |
파생 유형 (logic_error를 통해)
Sr. 아니. |
파생 유형 |
정의 |
1 |
domain_error |
도메인 오류 예외입니다. |
2 |
미래 _ 오류 |
향후 오류 예외입니다. |
삼 |
invalid_argument |
잘못된 인수 예외입니다. |
4 |
길이 _ 오류 |
길이 오류 예외입니다. |
5 |
범위를 벗어난 |
범위를 벗어난 예외입니다. |
파생 된 유형 (런타임 _ 오류를 통해)
Sr. 아니. |
파생 유형 |
정의 |
1 |
오버플로 _ 오류 |
오버플로 오류 예외입니다. |
2 |
범위 _ 오류 |
범위 오류 예외입니다. |
삼 |
시스템 오류 |
시스템 오류 예외입니다. |
4 |
underflow_error |
언더 플로 오류 예외입니다. |
파생 유형 (bad_alloc 사용)
Sr. 아니. |
파생 유형 |
정의 |
1 |
bad_array_new_length |
잘못된 배열 길이에 대한 예외입니다. |
파생 된 유형 (C ++ 11 이후 system_error 통해)
Sr. 아니. |
파생 유형 |
정의 |
1 |
ios_base :: failure |
스트림 예외의 기본 클래스입니다. |
회원 기능
Sr. 아니. |
파생 유형 |
정의 |
1 |
(건설자) |
생성자 예외입니다 |
2 |
operator = |
복사 예외입니다 |
삼 |
뭐 |
예외를 식별하는 문자열을 가져 오는 데 사용됩니다. |
4 |
(폐물 소각로) |
파괴 예외입니다. |