我做了一些实验,发现当整数除以零时会引发异常。

#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。它还可能扔什么?

有帮助吗?

解决方案

这是一个Windows结构化异常,其中有没有用C ++做的事 - 你会得到相同的异常,如果它是一个C程序

其他提示

本文声称有一种方法可以使用以下方法将结构化异常转换为 C++ 异常: _set_se_translator 功能。

http://www.codeproject.com/KB/cpp/seeException.aspx

的结果是不确定的,则可以使用 __try / __except 块捕获错误(结构化异常处理)。但是,为什么不干脆你分割前检查是否有错误?

在MSVC6您可以赶上(...)抓住它,并抛出重新抛出;但是,因为你无法察觉的异常类型这样,你最好做别的事情。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top