当整数除以零时,msvc 6 会抛出啥?

Posted

技术标签:

【中文标题】当整数除以零时,msvc 6 会抛出啥?【英文标题】:What does msvc 6 throw when an integer divide by zero occurs?当整数除以零时,msvc 6 会抛出什么? 【发布时间】:2009-12-15 19:58:28 【问题描述】:

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

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

【问题讨论】:

不会抛出被零除异常? 【参考方案1】:

这是一个 Windows 结构化异常,与 C++ 无关 - 如果它是 C 程序,您会得到相同的异常。

【讨论】:

【参考方案2】:

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

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

【讨论】:

【参考方案3】:

结果未定义,您可以使用__try / __except 块来捕获错误(结构化异常处理)。但是,为什么不简单地在除法之前检查错误呢?

【讨论】:

【参考方案4】:

在 msvc6 中,您可以使用 catch(...) 捕获它并使用 throw 重新抛出它;但是,由于您无法以这种方式检测异常类型,因此您最好执行其他操作。

【讨论】:

以上是关于当整数除以零时,msvc 6 会抛出啥?的主要内容,如果未能解决你的问题,请参考以下文章

FileManager 会抛出啥错误?

c ++ opencv randu函数抛出'整数除以零'

抛出啥异常? (Python)[重复]

如果表单字段包含空格,则Spring命令对象会抛出整数字段的NumberFormatException

当 .toFixed(2) 小数点后为零时,如何将浮点数格式化为整数?

clickhouse