2012-08-26 74 views

回答

1
#include <exception> 

try 
{ 
    if(1) 
     throw std::exception(); 
} 
catch(...) 
{ 
    printf("hi"); 
} 

這可能會更好,這取決於你正在做什麼:

class my_exception : public std::exception {}; 

然後,

try 
{ 
    if(1) 
     throw my_exception(); 
} 
catch(my_exception) 
{ 
    printf("hi"); 
} 
6

「裸投」重新拋出一個已被捕獲的異常。如果沒有什麼可以重新推出,效果不佳。

你真的可以拋出任何東西,如throw "Error!";,即使這不是太有用。你可以嘗試,否則

if (x == 1) 
    throw std::runtime_error("x == 1 is not a good value here")`. 
+0

我不打算使用拋出信息。是否有一些標準的做法可能像'throw std :: defaultthrow'? – loop

+0

你*應該*使用例外。 「catch(...)」基本上毫無價值,因爲你不知道如何從「任何」異常中恢復過來。如果你堅持一個完全泛型的異常類型,你可以選擇簡單的類型,比如'throw false;',或者使用標準的'std :: runtime_error()'。 – tenfour