std::system_error::system_error
Von cppreference.com
< cpp | error | system error
| system_error( std::error_code ec ); |
(1) | (seit C++11) |
| system_error( std::error_code ec, const std::string& what_arg ); |
(2) | (seit C++11) |
| system_error( std::error_code ec, const char* what_arg ); |
(2) | (seit C++11) |
| system_error( int ev, const std::error_category& ecat ); |
(3) | (seit C++11) |
| system_error( int ev, const std::error_category& ecat, const std::string& what_arg ); |
(4) | (seit C++11) |
| system_error( int ev, const std::error_category& ecat, const char* what_arg ); |
(4) | (seit C++11) |
| system_error( const system_error& other ) noexcept; |
(5) | (seit C++11) |
Konstruiert ein neues Systemfehler-Objekt.
1) Konstruiert mit Fehlercode ec.
2) Konstruiert mit Fehlercode ec und Erklärungsstring what_arg. Vom String, der von what() zurückgegeben wird, ist garantiert, dass er what_arg als Unterzeichenfolge enthält.
3) Konstruiert mit zugrundeliegendem Fehlercode ev und assoziierter Fehlerkategorie ecat.
4) Konstruiert mit zugrundeliegendem Fehlercode ev, assoziierter Fehlerkategorie ecat und Erklärungsstring what_arg. Vom String, der von what() zurückgegeben wird, ist garantiert, dass er what_arg als Unterzeichenfolge enthält (vorausgesetzt, er enthält kein eingebettetes Nullzeichen).
5) Kopierkonstruktor. Initialisiert den Inhalt mit dem von other. Wenn *this und other beide den dynamischen Typ
std::system_error haben, dann ist std::strcmp(what(), other.what()) == 0.[Abschnitt bearbeiten] Parameter
| ec | - | Fehlercode |
| ev | - | zugrundeliegender Fehlercode in der Enumeration, die mit ecat assoziiert ist |
| ecat | - | die Fehlerkategorie |
| what_arg | - | erklärende Zeichenkette |
| Sonstiges | - | ein weiteres zu kopierendes system_error |
[Abschnitt bearbeiten] Beispiel
Demonstriert, wie eine system_error-Ausnahme aus einem errno-Wert erstellt wird.
Führen Sie diesen Code aus
#include <iostream> #include <system_error> int main() { try { throw std::system_error(EDOM, std::generic_category(), "FIX ME"); } catch (const std::system_error& ex) { std::cout << "code: [" << ex.code() << "]\n" "message: [" << ex.code().message() << "]\n" "what: [" << ex.what() << "]\n"; } }
Mögliche Ausgabe
code: [generic:33] message: [Numerical argument out of domain] what: [FIX ME: Numerical argument out of domain]