std::nested_exception
Da 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. |
Definido no cabeçalho <exception> | ||
class nested_exception; | (desde C++11) | |
std::nested_exceptions
é uma classe mixin polimórficas que podem captar e armazenar a excepção de corrente, o que torna possível a excepções ninho de tipos arbitrárias uns dentro dos outros. 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]Funções de membro
constrói um 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. (função pública membro) | |
[virtual] | destrói uma exceção aninhada 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. (função pública virtual membro) |
substitui o conteúdo de um 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. (função pública membro) | |
lança a exceção armazenado 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. (função pública membro) | |
obtém um ponteiro para a excepção armazenado 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. (função pública membro) |
[editar]Exemplo
Demonstra construção e recursividade através de um objeto de exceção aninhada
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 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);}}
Saída:
exception: run() failed exception: Couldn't open nonexistent.file exception: basic_ios::clear
[editar]Veja também
(C++11) | tipo ponteiro compartilhado para manusear objetos de exceção 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) |