将在 CATCH 块之后执行代码

Will code execute after CATCH block?

本文关键字:执行 代码 之后 CATCH 将在      更新时间:2023-10-16

对于许多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();"?如果是这样,那么我会除了代码崩溃。

这是我正在查看的一些遗留/旧代码。请就另一个 TRY 中的 TRY 发表您的意见。

而且,如果它命中 CATCH 块,它会转到函数的末尾并调用返回 ret

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

是的。

如果是这样,那么[我]会[期望]代码崩溃。

我也是。

而且,如果它命中 CATCH 块,它会转到函数的末尾并调用返回 ret?

是的。