创建&的常用方法是什么?处理c ++中的异常?
class CannotRead : public runtime_exception { ... }
class CannotParse : public runtime_exception { ... }
...
throw CannotRead();
...
或
...
throw runtime_error("cannot read");
...
在C ++中这样做的惯用方法是什么?
赞赏比较这两种方法的文章的链接。
由于
答案 0 :(得分:4)
没有任何削减和干燥的建议,但我个人的经验法则是:
std::runtime_error
(或其中一个兄弟姐妹,视情况而定)catch
- 各种异常之间的时间,然后开始深化继承层次。答案 1 :(得分:1)
通常,正如其他人在评论中提到的那样,您派生自std::runtime_error
并重载what()
虚拟方法。作为读者的练习,也可以编写构造函数来捕获异常消息。 This网站提供了以下代码(虽然我略微修改了它以反映std::runtime_error
更改)。
#include <iostream>
#include <exception>
class MyException : public std::runtime_error
{
const char * what () const throw () {
return "C++ Exception";
}
};
int main()
{
try {
throw MyException();
} catch(MyException& e) {
std::cout << "MyException caught" << std::endl;
std::cout << e.what() << std::endl;
} catch(std::exception& e) {
}
return 0;
}