2011-01-21 27 views
1

如何在XCode中啓用例外 - 3.2.3。有沒有像我應該爲編譯器啓用異常處理的標誌?嘗試谷歌搜索,但沒有找到足夠的信息在XCode與C++如何在XCode 3.2.3上啓用異常處理?

#include <iostream> 
#include <exception> 

int main() 
{ 
    try 
    { 
     int i=5,j=0; 
     int res = i/j; 
    } 
    catch (const std::exception& exe) 
    { 
     std::cerr<< exe.what(); 
    } 
    catch (...) 
    { 
     std::cout<< "\n Default Exception Handler \n"; 
    } 

    return 0; 
} 

輸出:

加載程序到調試...
程序加載。
運行
[切換處理1332]
運行...
程序接收到的信號:「EXC_ARITHMETIC」。
sharedlibrary apply-load-rules全部
kill
當前語言:auto;目前C++
退出
調試器已與狀態0(GDB)

編輯退出:雖然原因似乎是不同的,對任何人,這個數字可能會在未來有所幫助。

回答

1

我敢肯定異常處理是默認情況下,但我不認爲除零實際上產生一個異常。如果你想確定它們是在打開的,只需轉到你的項目或目標設置,然後搜索「異常」;有一個名爲「啓用C++異常」的複選框。

+0

感謝您的信息。它是默認啓用的。上面的討論是它的原因。 – Mahesh 2011-01-21 18:15:24

1

一個CPU異常,比如像上面除零之類的算術異常,不是C++異常。由於微軟添加了一個非標準擴展,允許將CPU異常視爲C++異常,但是這並不是標準,當然也不是可移植的,所以只使用過Microsoft Visual C++的人經常會對此感到困惑。

0

你試圖處理異常的方式是正確的......這將在異常流程中起作用。

不是:EXC_ARITHMETIC(devision by 0)不是一個例外,它是一個信號 - 所以你必須使用信號處理程序來處理這個問題。