Biblioteca C ++ - <excepción>

Introducción

Es una clase de excepción estándar. Todos los objetos lanzados por componentes de la biblioteca estándar se derivan de esta clase. Por lo tanto, todas las excepciones estándar pueden detectarse capturando este tipo por referencia.

Declaración

A continuación se muestra la declaración para std :: exception.

class exception;

Ejemplo

En el siguiente ejemplo para 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();
   }
}

Tipos derivados

No Señor. Tipos derivados Definición
1 bad_alloc Esta excepción se lanza cuando falla la asignación de memoria.
2 bad_cast Esta excepción se lanza al fallar la transmisión dinámica
3 bad_exception Esta es una excepción lanzada por un controlador inesperado
4 bad_function_call Esta excepción lanzada en una mala llamada
5 bad_typeid Esta excepción lanzada en typeid de puntero nulo
6 bad_weak_ptr Es un mal puntero débil
7 ios_base :: falla Es una clase base para excepciones de transmisión.
8 error_lógico Es una excepción de error lógico
9 Error de tiempo de ejecución Es una excepción de error en tiempo de ejecución.

Tipos derivados (a través de error_logico)

No Señor. Tipos derivados Definición
1 domain_error Es una excepción de error de dominio.
2 future_error Es una futura excepción de error.
3 argumento no válido Es una excepción de argumento no válido.
4 length_error Es una excepción de error de longitud
5 fuera de rango Es una excepción fuera de rango

Tipos derivados (a través de runtime_error)

No Señor. Tipos derivados Definición
1 overflow_error Es una excepción de error de desbordamiento
2 range_error Es una excepción de error de rango
3 error del sistema Es una excepción de error del sistema.
4 underflow_error Es una excepción de error de subdesbordamiento

Tipos derivados (a través de bad_alloc)

No Señor. Tipos derivados Definición
1 bad_array_new_length Es una excepción en la longitud de matriz incorrecta

Tipos derivados (a través de system_error, desde C ++ 11)

No Señor. Tipos derivados Definición
1 ios_base :: falla Es una clase base para excepciones de transmisión.

Funciones de miembro

No Señor. Tipos derivados Definición
1 (constructor) Es una excepción del constructor
2 operador = Es una excepción de copia
3 qué Se utiliza para obtener una excepción de identificación de cadenas.
4 (incinerador de basuras) Es una excepción de destrucción