std::uncaught_exception – cppreference.com
Aus cppreference.com
<metanoindex/>
<tbody> </tbody>
| definiert in Header <exception> |
||
|
|
||
Erkennt, ob der aktuelle Thread hat eine Live-Exception-Objekt, das heißt, es wird eine Ausnahme geworfen wurde und noch nicht eingetragen eine passende catch-Klausel, std::terminate oder std::unexpected. Mit anderen Worten, wenn detektiert std::uncaught_exception Stapel Abwickeln Derzeit wird .
Original:
Detects if the current thread has a live exception object, that is, an exception has been thrown and not yet entered a matching catch clause, std::terminate or std::unexpected. In other words, std::uncaught_exception detects if stack unwinding is currently in progress.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Manchmal ist es sicher eine Ausnahme auch während std::uncaught_exception() == true werfen. Zum Beispiel, wenn Ausnahmen abgefangen werden und ignoriert in einem Destruktor, können sie sich nicht fortpflanzen aus ihm heraus und werden nicht an std::terminate führen .
Original:
Sometimes it's safe to throw an exception even while std::uncaught_exception() == true. For example, if exceptions are caught and ignored in a destructor, they can't propagate out of it and won't lead to std::terminate.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Parameter
(None)
Original:
(none)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Rückgabewert
true, wenn Stack Unwinding derzeit im Gange ist in diesem Thread .
Original:
true if stack unwinding is currently in progress in this thread.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Ausnahmen
Beispiel
#include <iostream> #include <exception> #include <stdexcept> struct Foo { ~Foo() { if (std::uncaught_exception()) { std::cout << "~Foo() called during stack unwinding\n"; } else { std::cout << "~Foo() called normally\n"; } } }; int main() { Foo f; try { Foo f; std::cout << "Exception thrown\n"; throw std::runtime_error("test exception"); } catch (const std::exception& e) { std::cout << "Exception caught: " << e.what() << '\n'; } }
Output:
Exception thrown ~Foo() called during stack unwinding Exception caught: test exception ~Foo() called normally
Siehe auch
Funktion aufgerufen, wenn Ausnahmebehandlung ausfällt Original: function called when exception handling fails The text has been machine-translated via Google Translate. (Funktion) [edit] | |
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. (typedef) [edit] | |