2017-02-01 81 views
-3

对于许多C++专家来说,这应该是相当容易的问题。在CATCH块后执行代码吗?

我有一些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; 
} 

正如你看到有另一次尝试,里面一试。在CATCH中,它将pObj设置为NULL。那么它有可能会从CATCH块中出来并执行代码行“ret = pObj-> GetAllNumbers();”?如果是这样,那么我会除了代码崩溃。

这是一些leagcy /旧代码在看。请在另一个TRY内进行TRY的评论。

而且,如果它碰到一个CATCH块,它将会进入该函数的结尾并致电返回ret

+2

您能否修理您的缩进? –

+0

'BOOL'不在C++ 11中。您可能是指'bool' –

+0

@BasileStarynkevitch:可能使用旧的Microsoft类型别名 –

回答

6

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

是的。

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

我也是。

而且,如果它碰到一个CATCH块,它会去函数的结尾并且调用return ret?

是的。

+4

你可能刚刚测试过它。 –

+0

我没有办法测试它,因为它是一些无法构建的碎片。 –

+3

@DonK:为什么你关心它如果被破坏以至于不能构建?它什么都不做! –