【问题标题】:In the try catch block is it bad to return inside the catch? which is good practice在 try catch 块中返回 catch 是不是很糟糕?这是一个好习惯
【发布时间】:2009-11-11 06:16:09
【问题描述】:

在 try catch 块中从 C++ 中的 catch 块返回值是不好的做法吗?

try
{
    //Some code...
    return 1;
}
catch(...)
{
    return 0;
}

哪种使用 try/catch 的方法是好的做法?

【问题讨论】:

    标签: c++ try-catch


    【解决方案1】:

    不,只要返回的值是你想要的,你可以随时返回。 (如果分配了内存,请确保您已清除内存)。

    【讨论】:

      【解决方案2】:

      我更喜欢在我的代码中有几个退出点,所以我会写:

      int rc = 1;
      try {
        // some code
      }
      catch(...) {
        rc = 0;
      }
      return rc;
      

      我发现当我只需要跟踪一个返回语句时,调试和阅读代码会更容易。

      【讨论】:

      • 我个人觉得这也更好,但这也取决于函数的大小,有时拥有多个退出点(恕我直言)比处理大量代码更干净,如果错误状态有已到达。
      【解决方案3】:

      我建议如果您不知道代码抛出了什么样的异常,那么您可以这样做。但是在这种情况下,客户端必须根据返回值采取行动。

      但是如果你创建用户定义的异常并抛出它会更好,这样客户就可以知道到底发生了什么。这就是异常的实际用途,推荐给库编写者。

      【讨论】:

      • 如果你不知道抛出了什么异常,那么你就没有办法捕捉它。如果你捕获了一个异常并且不重新抛出,那么你最好已经解决了异常的原始原因,这可能是内存不足、访问冲突、总线错误、打印机着火或您从未听说过的任何其他事情。只抓住你所期待的。让其他一切交给调用者。
      【解决方案4】:

      在函数的末尾,在 try/catch 块之后返回是一个好习惯。

      【讨论】:

      • 说某事是一种好习惯是没有道理的。
      猜你喜欢
      • 2013-10-31
      • 1970-01-01
      • 2017-12-26
      • 2010-10-01
      • 2011-01-05
      • 2012-05-27
      • 2011-04-13
      • 2016-08-26
      • 2017-12-09
      相关资源
      最近更新 更多