This question already has answers here:
Conventions for exceptions or error codes
(22个答案)
6年前关闭。
我有一个与c ++异常有关的问题。我知道在许多情况下,抛出异常要比返回错误值更好。但是,我确实发现以下情况,返回错误值比例外更可行:
从上面的代码可以看出,要完成一个功能,需要几个步骤。如果一个步骤失败,则返回错误值。然后,当操作员使用功能
但是,如果我们使用例外:
那么我就有程序崩溃和引发异常的风险。我的问题是:在这种情况下,我是否有理由返回错误值?是否有一些行会选择错误值和异常?谢谢!
(22个答案)
6年前关闭。
我有一个与c ++异常有关的问题。我知道在许多情况下,抛出异常要比返回错误值更好。但是,我确实发现以下情况,返回错误值比例外更可行:
bool run_a_function()
{
if (!function_step1())
return false;
if (!function_step2())
return false;
if (!function_step3())
return false;
if (!function_step4())
return false;
}
从上面的代码可以看出,要完成一个功能,需要几个步骤。如果一个步骤失败,则返回错误值。然后,当操作员使用功能
run_a_function
时,他可以确保即使该功能运行不正常,程序也不会崩溃: if (run_a_function())
do_something();
else
do_other_things();
但是,如果我们使用例外:
void run_a_function()
{
try
{
function_step1();
function_step2();
function_step3();
function_step4();
}
catch (...)
{
}
}
那么我就有程序崩溃和引发异常的风险。我的问题是:在这种情况下,我是否有理由返回错误值?是否有一些行会选择错误值和异常?谢谢!
最佳答案
看看这个http://www.parashift.com/c++-faq/exceptions.html
通常,只有在证明异常是问题所在时,我才在性能关键的部分中使用返回值。另外,您绝对不要跨越模块边界。
关于c++ - 在哪种情况下,我们应该更喜欢返回错误值而不是抛出异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16979603/
10-12 23:21