Espacios de nombres
Variantes
Acciones

std::rethrow_if_nested

De cppreference.com
< cpp‎ | error
 
 
Biblioteca de servicios
 
 
Definido en el archivo de encabezado <exception>
template<class E >
void rethrow_if_nested(const E& e );
(desde C++11)
Si E es un tipo que se deriva de manera inequívoca std::nested_exception, extractos y produce la excepción anidada como si se aplicase dynamic_cast<conststd::nested_exception&>(e).rethrow_nested(). De lo contrario, no hace nada .
Original:
If E is a type that is unambiguously derived from std::nested_exception, extracts and throws the nested exception as if by calling dynamic_cast<conststd::nested_exception&>(e).rethrow_nested(). Otherwise, does nothing.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Contenido

[editar]Parámetros

e -
el objeto de excepción para volver a lanzar
Original:
the exception object to rethrow
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[editar]Valor de retorno

(Ninguno)
Original:
(none)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[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.

#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 holdsvoid print_exception(conststd::exception& e, int level =0){std::cerr<<std::string(level, ' ')<<"exception: "<< e.what()<<'\n';try{ std::rethrow_if_nested(e);}catch(conststd::exception& e){ print_exception(e, level+1);}catch(...){}}   // sample function that catches an exception and wraps it in a nested exceptionvoid open_file(conststd::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 exceptionvoid 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 exceptionint main(){try{ run();}catch(conststd::exception& e){ print_exception(e);}}

Salida:

exception: run() failed exception: Couldn't open nonexistent.file exception: basic_ios::clear

[editar]Ver también

Un tipo mixin para capturar y almacenar las excepciones en curso.
(clase)[editar]
Lanza su argumento mezclado con std::nested_exception.
(plantilla de función)[editar]
close