C ++ Kitaplığı - <istisna>

Giriş

Standart bir istisna sınıfıdır. Standart kitaplığın bileşenleri tarafından atılan tüm nesneler bu sınıftan türetilir. Bu nedenle, tüm standart istisnalar bu tür referansla yakalanarak yakalanabilir.

Beyanname

Aşağıda std :: exception için bildirim verilmiştir.

class exception;

Misal

Aşağıdaki örnekte std :: exception için.

#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();
   }
}

Türetilmiş türler

Sr.No. Türetilmiş türler Tanım
1 bad_alloc Bu istisna bellek ayırmada başarısız olduğunda atılır
2 bad_cast Bu istisna, dinamik yayınlama başarısızlığında atılır
3 bad_exception Bu, beklenmedik işleyici tarafından atılan bir istisna
4 bad_function_call Kötü aramada bu istisna
5 bad_typeid Boş göstericinin typeidine atılan bu istisna
6 bad_weak_ptr Kötü, zayıf bir işaretçi
7 ios_base :: başarısızlık Akış istisnaları için temel bir sınıftır
8 logic_error Bu bir mantık hatası istisnasıdır
9 çalışma hatası Bu bir çalışma zamanı hatası istisnasıdır

Türetilmiş türler (logic_error aracılığıyla)

Sr.No. Türetilmiş türler Tanım
1 domain_error Bu bir alan hatası istisnasıdır
2 Future_error Bu gelecekteki bir hata istisnasıdır
3 geçersiz argüman Geçersiz bir bağımsız değişken istisnası
4 length_error Bu bir uzunluk hatası istisnasıdır
5 out_of_range Menzil dışı bir istisnadır

Türetilmiş türler (runtime_error aracılığıyla)

Sr.No. Türetilmiş türler Tanım
1 overflow_error Bu bir taşma hatası istisnasıdır
2 range_error Bu bir aralık hatası istisnasıdır
3 Sistem hatası Bu bir sistem hatası istisnasıdır
4 underflow_error Bu bir alttan taşma hatası istisnasıdır

Türetilmiş türler (bad_alloc aracılığıyla)

Sr.No. Türetilmiş türler Tanım
1 bad_array_new_length Kötü dizi uzunluğunda bir istisnadır

Türetilmiş türler (system_error aracılığıyla, C ++ 11'den beri)

Sr.No. Türetilmiş türler Tanım
1 ios_base :: başarısızlık Akış istisnaları için temel bir sınıftır

Üye fonksiyonları

Sr.No. Türetilmiş türler Tanım
1 (kurucu) Yapıcı istisnasıdır
2 operatör = Bu bir kopya istisnasıdır
3 ne İstisnayı tanımlayan dize almak için kullanılır.
4 (yıkıcı) Bu bir yok etme istisnası