2012-02-05 39 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