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

Don*_*n K -2 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;
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

Lig*_*ica 6

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

是.

如果确实如此,则[I]会[期望]代码崩溃.

我也是.

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

是.

  • 你可以刚试过它. (4认同)
  • @DonK:你为什么要关心它如果被破坏而不能构建呢?它没有做任何事情! (3认同)