std::exception
Definido en el archivo de encabezado <exception> | ||
class exception; | ||
Proporciona una interfaz consistente para controlar los errores a través de la expresión throw.
Todas las excepciones generadas por la biblioteca estándar heredan de std::exception.
Todas las funciones miembro de | (desde C++26) |
Contenido |
[editar]Funciones miembro
Construye el objeto excepción (función miembro pública) | |
[virtual] | Destruye el objeto excepción. (función miembro virtual pública) |
Copia el objeto excepción. (función miembro pública) | |
[virtual] | Devuelve una cadena aclaratoria. (función miembro virtual pública) |
[editar]Standard exception requirements
Cada clase de la biblioteca estándar T
que se deriva de std::exception
tiene las siguientes funciones miembro públicamente accesibles, cada una de ellas no egresan con una excepción(hasta C++11)tiene una especificación de excepción de no-lanzamiento(desde C++11):
- constructor por defecto (a menos que se suministren otros constructores),
- constructor de copia,
- operador de asignación de copia.
El constructor de copia y el operador de asignación de copia cumplen con la siguiente poscondición:
- Si dos objetos lhs y rhs tienen ambos tipo dinámico
T
y lhs es una copia de rhs, entonces std::strcmp(lhs.what(), rhs.what()) es igual a 0.
La función miembro what()
de cada uno de estos T
satisface las restricciones especificadas para std::exception::what().
[editar]Excepciones estándar
- range_error
- overflow_error
- underflow_error
- regex_error(desde C++11)
- system_error(desde C++11)
- ios_base::failure(desde C++11)
- filesystem::filesystem_error(desde C++17)
- tx_exception(TM TS)
- nonexistent_local_time(desde C++20)
- ambiguous_local_time(desde C++20)
- format_error(desde C++20)
- bad_any_cast(desde C++17)
- bad_optional_access(desde C++17)
- bad_expected_access(desde C++23)
- bad_weak_ptr(desde C++11)
- bad_function_call(desde C++11)
- bad_alloc
- bad_array_new_length(desde C++11)
- bad_exception
- ios_base::failure(hasta C++11)
- bad_variant_access(desde C++17)
[editar]Notas
Macro de prueba de característica | |||
---|---|---|---|
__cpp_lib_constexpr_exceptions | 202411L | (C++26) | constexpr para los tipos excepción. |
[editar]Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
---|---|---|---|
LWG 471 | C++98 | No existía un requisito en las clases de la biblioteca estándar derivadas de std::exception . | Se añadieron. |