std:: format_error
|
Definiert im Header
<format>
|
||
|
class
format_error
:
public
runtime_error
|
(seit C++20) | |
Definiert den Typ des Ausnahmeobjekts, das zur Meldung von Fehlern in der Formatierungsbibliothek ausgelöst wird.
Alle Memberfunktionen von
std::format_error
sind
constexpr
: Es ist möglich,
std::format_error
-Objekte in der Auswertung eines konstanten Ausdrucks zu erstellen und zu verwenden.
Allerdings können
|
(seit C++26) |
Vererbungsdiagramm
Inhaltsverzeichnis |
Memberfunktionen
|
(Konstruktor)
|
Konstruiert ein neues
format_error
Objekt mit der angegebenen Nachricht
(Öffentliche Mitgliedsfunktion) |
|
operator=
|
Ersetzt das
format_error
Objekt
(Öffentliche Mitgliedsfunktion) |
std::format_error:: format_error
|
format_error
(
const
std::
string
&
what_arg
)
;
|
(1) | (constexpr seit C++26) |
|
format_error
(
const
char
*
what_arg
)
;
|
(2) | (constexpr seit C++26) |
|
format_error
(
const
format_error
&
other
)
noexcept
;
|
(3) | (constexpr seit C++26) |
std::format_error
haben, dann gilt
std::
strcmp
(
what
(
)
, other.
what
(
)
)
==
0
. Vom Kopierkonstruktor können keine Ausnahmen geworfen werden.
Parameter
| what_arg | - | erklärende Zeichenkette |
| other | - | ein weiteres Ausnahmeobjekt zum Kopieren |
Ausnahmen
Anmerkungen
Da das Kopieren von
std::format_error
keine Ausnahmen werfen darf, wird diese Nachricht typischerweise intern als separat alloziierte referenzgezählte Zeichenkette gespeichert. Dies ist auch der Grund, warum es keinen Konstruktor gibt, der
std::string&&
akzeptiert: Der Inhalt müsste ohnehin kopiert werden.
Eine abgeleitete Standardausnahmeklasse muss einen öffentlich zugänglichen Kopierkonstruktor besitzen. Dieser kann implizit definiert werden, solange die durch
what()
erhaltenen erklärenden Zeichenketten für das Originalobjekt und das kopierte Objekt identisch sind.
std::format_error:: operator=
|
format_error
&
operator
=
(
const
format_error
&
other
)
noexcept
;
|
(constexpr seit C++26) | |
Weist die Inhalte mit denen von
other
zu. Wenn
*
this
und
other
beide den dynamischen Typ
std::format_error
haben, dann ist
std::
strcmp
(
what
(
)
, other.
what
(
)
)
==
0
nach der Zuweisung. Vom Kopierzuweisungsoperator kann keine Exception geworfen werden.
Parameter
| other | - | ein weiteres Exception-Objekt, mit dem zugewiesen wird |
Rückgabewert
* this
Anmerkungen
Eine abgeleitete Standard-Exception-Klasse muss einen öffentlich zugänglichen Kopierzuweisungsoperator haben. Er kann implizit definiert werden, solange die erklärenden Zeichenketten, die durch
what()
erhalten werden, für das ursprüngliche Objekt und das kopierte Objekt gleich sind.
Geerbt von std:: runtime_error
Geerbt von std:: exception
Elementfunktionen
|
[virtual]
|
zerstört das Exception-Objekt
(virtuelle öffentliche Elementfunktion von
std::exception
)
|
|
[virtual]
|
gibt einen erläuternden String zurück
(virtuelle öffentliche Elementfunktion von
std::exception
)
|
Hinweise
| Feature-Test Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_constexpr_exceptions
|
202502L
|
(C++26) | constexpr Exception-Typen |
Beispiel
#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); // wirft Exception } catch(const std::format_error& ex) { std::println("{}", ex.what()); } }
Mögliche Ausgabe:
format error: failed to parse format-spec