std:: format_error
|
Défini dans l'en-tête
<format>
|
||
|
class
format_error
:
public
runtime_error
|
(depuis C++20) | |
Définit le type d'objet d'exception levé pour signaler des erreurs dans la bibliothèque de formatage.
Toutes les fonctions membres de
std::format_error
sont
constexpr
: il est possible de créer et d'utiliser des objets
std::format_error
lors de l'évaluation d'une expression constante.
Cependant, les objets
|
(depuis C++26) |
Diagramme d'héritage
Table des matières |
Fonctions membres
|
(constructeur)
|
construit un nouvel objet
format_error
avec le message donné
(fonction membre publique) |
|
operator=
|
remplace l'objet
format_error
(fonction membre publique) |
std::format_error:: format_error
|
format_error
(
const
std::
string
&
what_arg
)
;
|
(1) | (constexpr depuis C++26) |
|
format_error
(
const
char
*
what_arg
)
;
|
(2) | (constexpr depuis C++26) |
|
format_error
(
const
format_error
&
other
)
noexcept
;
|
(3) | (constexpr depuis C++26) |
std::format_error
alors
std::
strcmp
(
what
(
)
, other.
what
(
)
)
==
0
. Aucune exception ne peut être levée depuis le constructeur de copie.
Paramètres
| what_arg | - | chaîne explicative |
| other | - | un autre objet d'exception à copier |
Exceptions
Notes
Comme la copie de
std::format_error
n'est pas autorisée à lever des exceptions, ce message est généralement stocké en interne sous forme de chaîne à comptage de référence allouée séparément. C'est aussi pourquoi il n'y a pas de constructeur prenant
std::string&&
: il devrait de toute façon copier le contenu.
Une classe d'exception standard dérivée doit avoir un constructeur de copie accessible publiquement. Il peut être implicitement défini tant que les chaînes explicatives obtenues par
what()
sont les mêmes pour l'objet original et l'objet copié.
std::format_error:: operator=
|
format_error
&
operator
=
(
const
format_error
&
other
)
noexcept
;
|
(constexpr depuis C++26) | |
Assigne le contenu avec celui de
other
. Si
*
this
et
other
ont tous deux le type dynamique
std::format_error
alors
std::
strcmp
(
what
(
)
, other.
what
(
)
)
==
0
après l'assignation. Aucune exception ne peut être levée par l'opérateur d'assignation de copie.
Paramètres
| other | - | un autre objet exception à assigner |
Valeur de retour
* this
Notes
Une classe d'exception standard dérivée doit avoir un opérateur d'assignation de copie accessible publiquement. Il peut être défini implicitement tant que les chaînes explicatives obtenues par
what()
sont les mêmes pour l'objet original et l'objet copié.
Hérité de std:: runtime_error
Hérité de std:: exception
Fonctions membres
|
[virtual]
|
détruit l'objet exception
(fonction membre publique virtuelle de
std::exception
)
|
|
[virtual]
|
retourne une chaîne explicative
(fonction membre publique virtuelle de
std::exception
)
|
Notes
| Macro de test de fonctionnalité | Valeur | Std | Fonctionnalité |
|---|---|---|---|
__cpp_lib_constexpr_exceptions
|
202502L
|
(C++26) | constexpr types d'exception |
Exemple
#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); // lève une exception } catch(const std::format_error& ex) { std::println("{}", ex.what()); } }
Sortie possible :
format error: failed to parse format-spec