【发布时间】:2011-08-07 23:23:30
【问题描述】:
我正在编写一些需要进行错误报告的库函数。我想使用异常而不是返回值。
我编写了引发 int 异常的函数。
例如:
if(strm->atEnd()){
// unexpected end of stream
throw -2;
}
我的问题是,这种方法可以吗?还是应该抛出从 std::exception 派生的异常?
以什么方式抛出 std::exception 更好? (除了能够使用 catch(std::exception &e))
抛出 int 异常是不好的做法吗? (所有 throw int 值都记录在 doxygen cmets 中)
我找不到任何理由说明为什么(在这种情况下)我应该扔一个物体。
【问题讨论】:
-
当我一起破解东西时,我可能会这样做。但是当我完成时,它总是会生成一个真正的异常对象(源自 std::rtuntime_error)。因为这简化了我所有的异常处理代码。假设你在 main() 中捕捉到了它。你怎么知道哪个组件产生了错误-345678?