ไลบรารี C ++ - <exception>

บทนำ

เป็นคลาสข้อยกเว้นมาตรฐาน วัตถุทั้งหมดที่ส่งโดยส่วนประกอบของไลบรารีมาตรฐานได้มาจากคลาสนี้ ดังนั้นข้อยกเว้นมาตรฐานทั้งหมดสามารถจับได้โดยการจับประเภทนี้โดยการอ้างอิง

คำประกาศ

ต่อไปนี้คือการประกาศสำหรับ 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 (ผู้ทำลาย) เป็นการทำลายข้อยกเว้น