我对 C++ 比较陌生,我只是想知道,抛出异常或编写 std::cerr 和 exit() 之间的主要区别是什么?我知道如果没有捕获异常,程序将退出。std::cerr 是否有任何用例,或者我应该总是抛出异常?或者我不应该在一般情况下使用 std::cerr ?是否有一些最佳实践?
throw std::runtime_error("runtime error msg");
或者
std::cerr << "cerr error msg";
exit(1);
两个版本都OK吗?
两者之间的主要区别在于您可以捕获和处理异常(用 引发throw
)。这个动作有两个优点:
答:您可以抛出异常并处理它,而不会导致程序崩溃。
B. 在处理异常时,他们会自动调用你的对象的析构函数。例如:
try {
A a;
throw runtime_error("A"); // Throw exception A
} catch (...) { // Catch exception A & Call a's object destructor.
throw runtime_error("B"); // Throw exception B and crush (if no one else catch it).
}
如果您考虑将来处理此代码(或者如果其他人需要继续处理此代码),您想使用throw
和 不exit(1)
选项。
有关更多详细信息,请参阅:调用 exit() 时是否运行析构函数?&是否在 C++ 中抛出后调用析构函数?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句