std::nested_exception
Aus cppreference.com
![]() |
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
definiert in Header <exception>
|
||
class nested_exception; |
(seit C++11) | |
std::nested_exceptions
ist eine polymorphe mixin Klasse, zu erfassen und speichern kann die aktuelle Ausnahme, wodurch es möglich zu verschachteln Ausnahmen beliebiger Typen ineinander . Original:
std::nested_exceptions
is a polymorphic mixin class which can capture and store the current exception, making it possible to nest exceptions of arbitrary types within each other. The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[Bearbeiten] Member-Funktionen
konstruiert eine nested_exception Original: constructs a nested_exception The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (öffentliche Elementfunktion) | |
[virtuell] |
zerstört sich eine verschachtelte Ausnahme Original: destructs a nested exception The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (virtuellen öffentlichen Member-Funktion) |
ersetzt den Inhalt eines nested_exception Original: replaces the contents of a nested_exception The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (öffentliche Elementfunktion) | |
wirft den gespeicherten Ausnahme Original: throws the stored exception The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (öffentliche Elementfunktion) | |
erhält einen Zeiger zu der gespeicherten Ausnahme Original: obtains a pointer to the stored exception The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (öffentliche Elementfunktion) |
[Bearbeiten] Beispiel
Demonstriert, Bau und Rekursion durch eine verschachtelte Exception-Objekt
Original:
Demonstrates construction and recursion through a nested exception object
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
#include <iostream> #include <stdexcept> #include <exception> #include <string> #include <fstream> // prints the explanatory string of an exception. If the exception is nested, // recurses to print the explanatory of the exception it holds void print_exception(const std::exception& e, int level = 0) { std::cerr << std::string(level, ' ') << "exception: " << e.what() << '\n'; try { std::rethrow_if_nested(e); } catch(const std::exception& e) { print_exception(e, level+1); } catch(...) {} } // sample function that catches an exception and wraps it in a nested exception void open_file(const std::string& s) { try { std::ifstream file(s); file.exceptions(std::ios_base::failbit); } catch(...) { std::throw_with_nested( std::runtime_error("Couldn't open " + s) ); } } // sample function that catches an exception and wraps it in a nested exception void run() { try { open_file("nonexistent.file"); } catch(...) { std::throw_with_nested( std::runtime_error("run() failed") ); } } // runs the sample function above and prints the caught exception int main() { try { run(); } catch(const std::exception& e) { print_exception(e); } }
Output:
exception: run() failed exception: Couldn't open nonexistent.file exception: basic_ios::clear
[Bearbeiten] Siehe auch
(C++11) |
teilte Zeigertyp für den Umgang mit Exception-Objekte Original: shared pointer type for handling exception objects The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (typedef) |