代码会在CATCH块之后执行吗?

时间:2017-02-01 18:01:35

标签: c++

对于许多C ++专家来说,这应该是一个非常简单的问题。

我有一些类似下面的C ++代码。

BOOL FindNumbersInObj() {

    BOOL ret = true;

    try {
        //Do bunch of things here...
        CMyObj pObj;

        try {
            pObj->GetMyObjectPtr();
        }
        catch (MyException ex) {
            pObj = NULL;
            ret = false;
        }
        ret = pObj->GetAllNumbers();
        //Do something here too....
    }
    catch (MyException ex) {
         //Log Error Message
         ret = false;
    } 
    return ret;
}

如你所见,在另一个TRY中有一个TRY。在CATCH中,它将pObj设置为NULL。那么它是否有可能从CATCH块中出来并执行代码行“ ret = pObj-> GetAllNumbers(); ”?如果是这样,那么除了代码崩溃之外我会。

这是我看到的一些leagcy / old代码。请在另一个TRY中提出你的意见。

如果它碰到CATCH块,它会到达函数的末尾并调用 return ret 吗?

1 个答案:

答案 0 :(得分:6)

  

那么它是否有可能从CATCH块中出来并执行代码行ret = pObj->GetAllNumbers();

  

如果确实如此,那么[I]会[期望]代码崩溃。

我也是。

  

如果它碰到CATCH块,它会转到函数的末尾并调用return ret吗?