2009-12-15 74 views
0

我一直在做一些嘗試,並發現一個異常被拋出,當一個整數除以零發生。當整數除以零時,msvc 6會發生什麼?

#include <iostream> 
#include <stdexcept> 

using namespace std; 


int main 
(
    void 
) 
{ 
    try 
    { 
     int x = 3; 
     int y = 0; 
     int z = x/y; 
     cout << "Didn't throw or signal" << endl; 
    } 
    catch (std::exception &e) 
    { 
     cout << "Caught exception " << e.what() << endl; 
    } 

    return 0; 
} 

顯然它並沒有拋出std :: exception。還有什麼可能會投擲?

+0

它不會拋出一個零除異常? – hometoast 2009-12-15 20:01:41

回答

3

這是一個Windows結構化異常,與C++無關 - 如果它是C程序,您將得到相同的異常。

0

結果未定義,您可以使用__try/__except塊來捕獲錯誤(結構化異常處理)。但是,爲什麼不在分區之前檢查錯誤?

0

在msvc6中,你可以用catch(...)來捕捉它,並用throw拋出;然而,因爲你無法以這種方式檢測異常類型,所以你最好做其他事情。

相關問題