当整数除以零时,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 会抛出啥?的主要内容,如果未能解决你的问题,请参考以下文章
如果表单字段包含空格,则Spring命令对象会抛出整数字段的NumberFormatException