std::nested_exception
提供: cppreference.com
![]() |
このページは、Google 翻訳を使って英語版から機械翻訳されました。
翻訳には誤りや奇妙な言い回しがあるかもしれません。文章の上にポインタをおくと、元の文章が見れます。誤りを修正して翻訳を改善する手助けをしてください。翻訳についての説明は、ここをクリックしてください。 |
Defined in header <exception>
|
||
class nested_exception; |
(C++11およびそれ以降) | |
std::nested_exceptions
お互いの範囲内で任意の型の巣の例外にそれを可能にし、現在の例外をキャプチャし、格納することができるポリモーフィックmixinクラスです. 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.
[編集] メンバ関数
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. (パブリックメンバ関数) | |
[仮想] |
ネストされた例外を破棄します 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. (仮想パブリックメンバ関数) |
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. (パブリックメンバ関数) | |
格納された例外をスローします 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. (パブリックメンバ関数) | |
格納された例外へのポインタを取得します 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. (パブリックメンバ関数) |
[編集] 例
ネストされた例外オブジェクトを介して建設や再帰を示しています
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 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); } }
出力:
exception: run() failed exception: Couldn't open nonexistent.file exception: basic_ios::clear
[編集] も参照してください
(C++11) |
例外オブジェクトを処理するための共有ポインタ型 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) |