บทนำ
เป็นคลาสข้อยกเว้นมาตรฐาน วัตถุทั้งหมดที่ส่งโดยส่วนประกอบของไลบรารีมาตรฐานได้มาจากคลาสนี้ ดังนั้นข้อยกเว้นมาตรฐานทั้งหมดสามารถจับได้โดยการจับประเภทนี้โดยการอ้างอิง
คำประกาศ
ต่อไปนี้คือการประกาศสำหรับ std :: ข้อยกเว้น
class exception;
ตัวอย่าง
ในตัวอย่างด้านล่างสำหรับ std :: ข้อยกเว้น
#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();
}
}
ประเภทที่ได้มา
ซีเนียร์ |
ประเภทที่ได้มา |
คำจำกัดความ |
1 |
bad_alloc |
ข้อยกเว้นนี้เกิดขึ้นจากความล้มเหลวในการจัดสรรหน่วยความจำ |
2 |
bad_cast |
ข้อยกเว้นนี้เกิดขึ้นจากความล้มเหลวในการร่ายแบบไดนามิก |
3 |
bad_exception |
นี่เป็นข้อยกเว้นที่เกิดจากตัวจัดการที่ไม่คาดคิด |
4 |
bad_function_call |
ข้อยกเว้นนี้เกิดขึ้นกับสายที่ไม่ถูกต้อง |
5 |
bad_typeid |
ข้อยกเว้นนี้เกิดขึ้นบน typeid ของตัวชี้ค่าว่าง |
6 |
bad_weak_ptr |
มันเป็นตัวชี้ที่อ่อนแอที่ไม่ดี |
7 |
ios_base :: ความล้มเหลว |
เป็นคลาสพื้นฐานสำหรับข้อยกเว้นสตรีม |
8 |
logic_error |
เป็นข้อยกเว้นข้อผิดพลาดทางตรรกะ |
9 |
การทำงานผิดพลาด |
เป็นข้อยกเว้นข้อผิดพลาดรันไทม์ |
ประเภทที่ได้รับ (ผ่าน logic_error)
ซีเนียร์ |
ประเภทที่ได้มา |
คำจำกัดความ |
1 |
domain_error |
เป็นข้อยกเว้นข้อผิดพลาดของโดเมน |
2 |
future_error |
เป็นข้อยกเว้นข้อผิดพลาดในอนาคต |
3 |
invalid_argument |
เป็นข้อยกเว้นของอาร์กิวเมนต์ที่ไม่ถูกต้อง |
4 |
length_error |
เป็นข้อยกเว้นข้อผิดพลาดเกี่ยวกับความยาว |
5 |
ไม่อยู่ในขอบเขต |
เป็นข้อยกเว้นนอกขอบเขต |
ประเภทที่ได้รับ (ผ่าน runtime_error)
ซีเนียร์ |
ประเภทที่ได้มา |
คำจำกัดความ |
1 |
overflow_error |
เป็นข้อยกเว้นข้อผิดพลาดล้น |
2 |
range_error |
เป็นข้อยกเว้นข้อผิดพลาดช่วง |
3 |
ระบบผิดพลาด |
เป็นข้อยกเว้นข้อผิดพลาดของระบบ |
4 |
underflow_error |
เป็นข้อยกเว้นข้อผิดพลาดที่น้อยเกินไป |
ประเภทที่ได้รับ (ผ่าน bad_alloc)
ซีเนียร์ |
ประเภทที่ได้มา |
คำจำกัดความ |
1 |
bad_array_new_length |
เป็นข้อยกเว้นสำหรับความยาวอาร์เรย์ที่ไม่ถูกต้อง |
ประเภทที่ได้รับ (ผ่าน system_error ตั้งแต่ C ++ 11)
ซีเนียร์ |
ประเภทที่ได้มา |
คำจำกัดความ |
1 |
ios_base :: ความล้มเหลว |
เป็นคลาสพื้นฐานสำหรับข้อยกเว้นสตรีม |
ฟังก์ชั่นสมาชิก
ซีเนียร์ |
ประเภทที่ได้มา |
คำจำกัดความ |
1 |
(ตัวสร้าง) |
เป็นข้อยกเว้นของตัวสร้าง |
2 |
ตัวดำเนินการ = |
เป็นข้อยกเว้นการคัดลอก |
3 |
อะไร |
ใช้เพื่อรับสตริงระบุข้อยกเว้น |
4 |
(ผู้ทำลาย) |
เป็นการทำลายข้อยกเว้น |