2013-01-31 35 views
2

的問題,這樣的代碼發生:如何捕捉一般異常,並顯示其得到的是什麼()

#include <cstdlib> 
#include <iostream> 
#include <stdexcept> 

using namespace std; 

int main(int argc, char** argv) { 

try { 
    throw runtime_error("Message"); 
} catch (exception e) { 
    cout << e.what(); 
} 
return 0; 
} 

我希望Message出現。但結果是std::exception。我認爲子類virtual functions可以從超類參考中調用。如何解決這個問題?

+0

你試過用誘餌嗎? – thang

+3

您正在切片異常對象 –

回答

7

C++明確區分了引用和值複製。使用

catch (const std::exception& e) 

通過引用而不是值捕獲。

+0

謝謝。成功了! – user98456