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ı |