Namensräume
Varianten
Aktionen

std::format_error

Von cppreference.com
< cpp‎ | utility‎ | format
 
 
 
 
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.

cpp/error/exceptioncpp/error/runtime errorstd-format error-inheritance.svg

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)
1) Konstruiert das Ausnahmeobjekt mit what_arg als erklärenden String. Nach der Konstruktion gilt std::strcmp(what(), what_arg.c_str()) == 0.
2) Konstruiert das Ausnahmeobjekt mit what_arg als erklärenden String. Nach der Konstruktion gilt std::strcmp(what(), what_arg) == 0.
3) Kopierkonstruktor. Wenn *this und other beide den dynamischen Typ 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

1,2) Kann std::bad_alloc auslösen.

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) [bearbeiten]
[virtuell]
gibt einen erklärenden String zurück
(virtuelle öffentliche Memberfunktion von std::exception) [bearbeiten]

[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

[bearbeiten] Siehe auch