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
- invalid_argument
- domain_error
- length_error
- out_of_range
- future_error (desde C++11)
- 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. |