什么时候应该在C ++中使用try-catch?

时间:2014-07-18 13:28:18

标签: c++ exception-handling try-catch

我现在有这样的好奇心:在C ++软件中,什么时候应该把一些代码放在try-catch系统中?什么时候不能?我知道实际上不可能实现try-捕获一个软件的所有方法中的所有代码(this link都有一些解释)并且我知道在某些情况下实现try-catch是一个好主意,例如:

  • 当一个变量与其他变量(或乘法的结果)进行数学划分时,可能会导致“除零”情况;
  • 当一个人使用在发生故障时抛出某些东西的类(不是我的情况,因为我使用的Qt不能与throw-catch一起使用,而是在发生错误时返回false或者设置为指向boolean变量的指针为false);
  • 当演员表演时可能导致演员失败

当然,可以使用try-catch作为组织反问题逻辑和日志编写的方法,例如:

myMethod()
{
    //One way
    if (!returnsBooleanMethod())
    {
        printf("An error occured!");
    }
    else
    {
        //do something
    }

    //Another way
    try
    {
        if (!returnsBooleanMethod())
            throw "";

        //do something
    }
    catch (...)
    {
        printf("An error occured!");
    }
}

而且,我认为上述两种可能方式之间的选择取决于开发人员和公司的偏好。

在C ++中实现try-catch系统时还有其他情况吗?

修改

我的问题被标记为Usage of try/catch blocks in C++的副本,在我看来,这是一个不好的行为:我的问题与那个问题不同,因为它只涉及并且特别是 我应该使用/它建议使用try-catch ,而另一个(尽管标题和3个“subquestions”中的一个)更多地处理特定的try-catch实现由作者描述和尝试捕捉速度效率(因为它的答案明确指出)。

0 个答案:

没有答案