std:: format_error
|
Definido en el encabezado
<format>
|
||
|
class
format_error
:
public
runtime_error
|
(desde C++20) | |
Define el tipo de objeto de excepción que se lanza para reportar errores en la biblioteca de formato.
Todas las funciones miembro de
std::format_error
son
constexpr
: es posible crear y utilizar objetos
std::format_error
en la evaluación de una expresión constante.
Sin embargo, los objetos
|
(since C++26) |
Diagrama de herencia
Contenidos |
Funciones miembro
|
(constructor)
|
construye un nuevo objeto
format_error
con el mensaje dado
(función miembro pública) |
|
operator=
|
reemplaza el objeto
format_error
(función miembro pública) |
std::format_error:: format_error
|
format_error
(
const
std::
string
&
what_arg
)
;
|
(1) | (constexpr desde C++26) |
|
format_error
(
const
char
*
what_arg
)
;
|
(2) | (constexpr desde C++26) |
|
format_error
(
const
format_error
&
other
)
noexcept
;
|
(3) | (constexpr desde C++26) |
std::format_error
entonces
std::
strcmp
(
what
(
)
, other.
what
(
)
)
==
0
. Ninguna excepción puede ser lanzada desde el constructor de copia.
Parámetros
| what_arg | - | cadena explicativa |
| other | - | otro objeto de excepción a copiar |
Excepciones
Notas
Debido a que copiar
std::format_error
no está permitido lanzar excepciones, este mensaje normalmente se almacena internamente como una cadena con conteo de referencias asignada por separado. Esta es también la razón por la cual no hay un constructor que tome
std::string&&
: tendría que copiar el contenido de todas formas.
Una clase de excepción estándar derivada debe tener un constructor de copia públicamente accesible. Puede estar implícitamente definido siempre que las cadenas explicativas obtenidas por
what()
sean las mismas para el objeto original y el objeto copiado.
std::format_error:: operator=
|
format_error
&
operator
=
(
const
format_error
&
other
)
noexcept
;
|
(constexpr desde C++26) | |
Asigna los contenidos con los de
other
. Si
*
this
y
other
ambos tienen tipo dinámico
std::format_error
entonces
std::
strcmp
(
what
(
)
, other.
what
(
)
)
==
0
después de la asignación. Ninguna excepción puede ser lanzada desde el operador de asignación de copia.
Parámetros
| other | - | otro objeto de excepción a asignar |
Valor de retorno
* this
Notas
Una clase de excepción estándar derivada debe tener un operador de asignación de copia públicamente accesible. Puede estar definido implícitamente siempre que las cadenas explicativas obtenidas por
what()
sean las mismas para el objeto original y el objeto copiado.
Heredado de std:: runtime_error
Heredado de std:: exception
Funciones miembro
|
[virtual]
|
destruye el objeto de excepción
(función miembro pública virtual de
std::exception
)
|
|
[virtual]
|
devuelve una cadena explicativa
(función miembro pública virtual de
std::exception
)
|
Notas
| Macro de prueba de características | Valor | Std | Característica |
|---|---|---|---|
__cpp_lib_constexpr_exceptions
|
202502L
|
(C++26) | constexpr tipos de excepción |
Ejemplo
#include <format> #include <print> #include <string_view> #include <utility> int main() { try { auto x13{37}; auto args{std::make_format_args(x13)}; std::ignore = std::vformat("{:()}", args); // lanza excepción } catch(const std::format_error& ex) { std::println("{}", ex.what()); } }
Salida posible:
format error: failed to parse format-spec