在哪种情况下,我们应该更喜欢将错误值返回到抛出异常

时间:2013-06-07 08:33:12

标签: c++ visual-studio-2010

我有一个与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;

}

从上面的代码可以看出,为了完成一个功能,需要几个步骤。如果一步失败,则返回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 (...)
    {
     }
  }

然后我冒了程序崩溃和抛出异常的风险。我的问题是:在这种情况下我有理由返回错误值吗?是否有一些用于选择错误值和异常的公会行?谢谢!

1 个答案:

答案 0 :(得分:1)

查看此http://www.parashift.com/c++-faq/exceptions.html 通常,当异常被证明是问题时,我只在性能关键部分中使用返回值。此外,你永远不应该跨越你的模块边界。