std::rethrow_if_nested

Da cppreference.com.
< cpp‎ | error

 
 
Utilità libreria
Tipo di supporto (basic types, RTTI, type traits)
Gestione della memoria dinamica
La gestione degli errori
Programma di utilità
Funzioni variadic
Data e ora
Funzione oggetti
initializer_list(C++11)
bitset
hash(C++11)
Gli operatori relazionali
Original:
Relational operators
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
rel_ops::operator!=
rel_ops::operator>
rel_ops::operator<=
rel_ops::operator>=
Coppie e tuple
Original:
Pairs and tuples
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
pair
tuple(C++11)
piecewise_construct_t(C++11)
piecewise_construct(C++11)
Swap, in avanti e spostare
Original:
Swap, forward and move
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
swap
forward(C++11)
move(C++11)
move_if_noexcept(C++11)
declval(C++11)
 
La gestione degli errori
Gestione delle eccezioni
Original:
Exception handling
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
exception
uncaught_exception
exception_ptr(C++11)
make_exception_ptr(C++11)
current_exception(C++11)
rethrow_exception(C++11)
nested_exception(C++11)
throw_with_nested(C++11)
rethrow_if_nested(C++11)
Gestione delle eccezioni fallimenti
Original:
Exception handling failures
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
terminate
terminate_handler
get_terminate(C++11)
set_terminate
unexpected(deprecato)
bad_exception
unexpected_handler(deprecato)
get_unexpected(C++11)(deprecato)
set_unexpected(deprecato)
Eccezione categorie
Original:
Exception categories
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
logic_error
invalid_argument
domain_error
length_error
out_of_range
runtime_error
range_error
overflow_error
underflow_error
Codici di errore
Original:
Error codes
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Codici di errore
errno
Asserzioni
Original:
Assertions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
assert
impianto system_error
Original:
system_error facility
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
error_category(C++11)
generic_category(C++11)
system_category(C++11)
error_condition(C++11)
errc(C++11)
error_code(C++11)
system_error(C++11)
 
Elemento definito nell'header <exception>
template<class E >
void rethrow_if_nested(const E& e );
(dal C++11)
Se E è un tipo che è inequivocabilmente derivato da std::nested_exception, estratti e genera l'eccezione nidificata come se chiamando dynamic_cast<conststd::nested_exception&>(e).rethrow_nested(). In caso contrario, non fa nulla.
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.

Indice

[modifica]Parametri

e -
l'oggetto eccezione di ripetere la generazione
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.

[modifica]Valore di ritorno

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

[modifica]Esempio

[edit]

Dimostra costruzione e ricorsione attraverso un oggetto eccezione nidificata
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);}}

Output:

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

[modifica]Vedi anche

un tipo mixin per acquisire e memorizzare le eccezioni attuali
Original:
a mixin type to capture and store current exceptions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(classe)[modifica]
lancia la sua tesi con std::nested_exception misto trovi
Original:
throws its argument with std::nested_exception mixed in
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(funzione di modello)[modifica]
close