std::format_error
| Definiert in Header <format> |
||
| class format_error; |
(seit C++20) | |
Definiert den Typ des Ausnahmeobjekts, das zur Meldung von Fehlern in der Formatierungsbibliothek ausgelöst wird.
Vererbungdiagramm
Inhalt |
[bearbeiten] Memberfunktionen
| (Konstruktor) |
konstruiert ein neues format_error-Objekt mit der angegebenen Nachricht(öffentliche Memberfunktion) |
| operator= |
ersetzt das format_error-Objekt(öffentliche Memberfunktion) |
std::format_error::format_error
| format_error( const std::string& what_arg ); |
(1) | |
| format_error( const char* what_arg ); |
(2) | |
| format_error( const format_error& other ) noexcept; |
(3) | |
std::format_error haben, dann gilt std::strcmp(what(), other.what()) == 0. Vom Kopierkonstruktor kann keine Ausnahme ausgelöst werden.Parameter
| what_arg | - | erklärende Zeichenkette |
| Sonstiges | - | ein anderes Ausnahmeobjekt zum Kopieren |
Ausnahmen
Anmerkungen
Da das Kopieren von std::format_error keine Ausnahmen auslösen darf, wird diese Nachricht typischerweise intern als separat zugewiesener, referenzgezählter String gespeichert. Dies ist auch der Grund, warum es keinen Konstruktor gibt, der std::string&& annimmt: Der Inhalt müsste ohnehin kopiert werden.
Eine abgeleitete Standard-Ausnahmeklasse muss einen öffentlich zugänglichen Kopierkonstruktor haben. Dieser kann implizit definiert werden, solange die durch what() erhaltenen erklärenden Strings für das Originalobjekt und das kopierte Objekt gleich sind.
std::format_error::operator=
| format_error& operator=( const format_error& other ) noexcept; |
||
Weist den Inhalt des Objekts dem von other zu. Wenn *this und other beide den dynamischen Typ std::format_error haben, dann gilt std::strcmp(what(), other.what()) == 0 nach der Zuweisung. Vom Kopierzuweisungsoperator kann keine Ausnahme ausgelöst werden.
Parameter
| Sonstiges | - | ein anderes Ausnahmeobjekt zum Zuweisen |
Rückgabewert
*this
Anmerkungen
Eine abgeleitete Standard-Ausnahmeklasse muss einen öffentlich zugänglichen Kopierzuweisungsoperator haben. Dieser kann implizit definiert werden, solange die durch what() erhaltenen erklärenden Strings für das Originalobjekt und das kopierte Objekt gleich sind.
Geerbt von std::runtime_error
Abgeleitet von std::exception
Memberfunktionen
| [virtuell] |
zerstört das Ausnahmeobjekt (virtuelle öffentliche Memberfunktion von std::exception) |
| [virtuell] |
gibt einen erklärenden String zurück (virtuelle öffentliche Memberfunktion von std::exception) |
[bearbeiten] 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); // throws } catch(const std::format_error& ex) { std::println("{}", ex.what()); } }
Mögliche Ausgabe
format error: failed to parse format-spec