Biblioteca C ++ - <exceção>

Introdução

É uma classe de exceção padrão. Todos os objetos lançados por componentes da biblioteca padrão são derivados desta classe. Portanto, todas as exceções padrão podem ser capturadas capturando este tipo por referência.

Declaração

A seguir está a declaração para std :: exception.

class exception;

Exemplo

No exemplo abaixo 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

Sr. Não. Tipos derivados Definição
1 bad_alloc Esta exceção lançada na falha de alocação de memória
2 bad_cast Esta exceção lançada na falha de elenco dinâmico
3 bad_exception Esta é uma exceção lançada por um manipulador inesperado
4 bad_function_call Esta exceção lançada em uma chamada ruim
5 bad_typeid Esta exceção lançada em typeid de ponteiro nulo
6 bad_weak_ptr É um indicador fraco e ruim
7 ios_base :: falha É uma classe base para exceções de fluxo
8 erro_lógico É uma exceção de erro lógico
9 runtime_error É uma exceção de erro de tempo de execução

Tipos derivados (por meio de logic_error)

Sr. Não. Tipos derivados Definição
1 domain_error É uma exceção de erro de domínio
2 futuro_error É uma exceção de erro futuro
3 argumento inválido É uma exceção de argumento inválido
4 comprimento_error É uma exceção de erro de comprimento
5 fora de alcance É uma exceção fora do intervalo

Tipos derivados (por meio de runtime_error)

Sr. Não. Tipos derivados Definição
1 overflow_error É uma exceção de erro de estouro
2 range_error É uma exceção de erro de intervalo
3 erro no sistema É uma exceção de erro do sistema
4 underflow_error É uma exceção de erro de underflow

Tipos derivados (por meio de bad_alloc)

Sr. Não. Tipos derivados Definição
1 bad_array_new_length É uma exceção para comprimentos de array inválidos

Tipos derivados (por meio de system_error, desde C ++ 11)

Sr. Não. Tipos derivados Definição
1 ios_base :: falha É uma classe base para exceções de fluxo

Funções de membro

Sr. Não. Tipos derivados Definição
1 (construtor) É uma exceção de construtor
2 operador = É uma exceção de cópia
3 o que É usado para obter exceção de identificação de string
4 (destruidor) É uma exceção de destruição