2012-02-05 19 views

回答

1
class my_exception : public std::exception 
{ 
public: 
my_exception(const std::string& msg) : msg_(msg) {} 
const char* what(); // override what to return msg_; 
private: 
    std::string msg_; 
}; 

//some other code.. 

throw my_exception("Error"); 

這就是你如何創建一個新的運行時異常。這只是一個class

+4

什麼不是'什麼()'重寫? (直接或作爲基類使用'std :: runtime_error'可能會更簡單。) – 2012-02-05 11:34:38

4

您可以在標題<stdexcept>中找到一些預定義的異常類型。

可以使用其中一個或從中派生出你的班級。它擁有所有已經實施的機器。

+0

+1,但stdexcept中總共有7個定義的異常,甚至msdn也給出了這些異常的非幫助示例:http://msdn.microsoft.com/en-US/library /k58422wy%28v=vs.80%29.aspx,而不是告訴他們何時發生,解釋他們是好的。可能你可以分享一些深層解釋的鏈接,或者你簡單地解釋它們? :) – 2012-02-05 11:15:18

+0

不,我不認爲有層次的任何解釋。標準委員會曾經覺得他們想要有一些例外類型的例子。如果你有一個運行時錯誤,只需從'std :: runtime_error'派生它,就完成了。 – 2012-02-05 11:21:48