書籍「ロベールのC++入門講座」の904ページに、静的変数のコンストラクターとデストラクターから投げた例外はcatchできない、と書いてあります。
静的変数のデストラクターから投げた例外がcatchできないことは分かりますが、コンストラクターから投げた例外はcatchできると思います。
実際、以下のコードではcatchできました。
コンパイラ: MSVC
C++
1#include <iostream> 2 3class CBase { 4public: 5 CBase() { 6 throw 1; 7 } 8}; 9 10int main() { 11 try { 12 static CBase base; 13 } catch(const int& error) { 14 std::cout << error << std::endl; 15 } 16}
グローバル領域にある静的変数なら、書籍通りだと思います。
本の間違いでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/29 10:24