2012-05-21 80 views
-4

我在釋放配置使用VS2010和C++爲什麼程序在沒有try/catch的情況下失敗?

以下好嗎執行:

int status; 
try 
{ 
    status = myfunction(arg1, arg2); 
} 
catch (int e) 
{ 
    cout << "An exception occurred. Exception Nr. " << e << endl; 
} 

但是,以下墜毀方案:

int status; 
status = myfunction(arg1, arg2); 

發生了什麼?
我沒有方法的來源,myfunction,它是第三方DLL的一部分。

+7

大概是因爲myfunction引發異常。 – Fanael

+1

如果你聲明一個名爲'statis'的變量,並初始化一個名爲'status'的變量,它甚至不會編譯... –

+0

我的猜測是myfunction導致崩潰,也許是因爲它不喜歡被傳遞兩個相同的東西參數。如果我是對的,那麼你欠我100萬美元用於浪費我的ESP而不是JREF的挑戰。 –

回答

5

通過刪除try/catch塊,您不會捕獲調用該函數時引發的異常。這會導致未捕獲的異常將堆棧一直關閉到main(),並且由於它仍然未處理,請退出程序

從oputput看來,拋出的整數是一個代碼,用於確切發生什麼錯誤。要查看是否可以調和,您需要查找錯誤代碼。

相關問題