std::nested_exception
De cppreference.com
![]() |
Esta página se ha traducido por ordenador/computador/computadora de la versión en inglés de la Wiki usando Google Translate.
La traducción puede contener errores y palabras aparatosas/incorrectas. Planea sobre el texto para ver la versión original. Puedes ayudar a corregir los errores y mejorar la traducción. Para instrucciones haz clic aquí. |
Definido en el archivo de encabezado <exception>
|
||
class nested_exception; |
(desde C++11) | |
std::nested_exceptions
es una clase mixin polimórfico que puede capturar y almacenar la excepción actual, por lo que es posible con las excepciones nido de tipos arbitrarios dentro de cada otro . 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.
[editar] Las funciones miembro
construye una 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. (función miembro pública) | |
[virtual] |
destructs una excepción anidada 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. (función miembro virtual pública) |
sustituye el contenido de un 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. (función miembro pública) | |
produce la excepción almacenado 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. (función miembro pública) | |
obtiene un puntero a la excepción almacenado 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. (función miembro pública) |
[editar] Ejemplo
Demuestra la construcción y la recursividad a través de un objeto de excepción anidada
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.
Ejecuta este código
#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); } }
Salida:
exception: run() failed exception: Couldn't open nonexistent.file exception: basic_ios::clear
[editar] Ver también
(C++11) |
Tipo de puntero compartido para la manipulación de objetos de excepción. (typedef) |