gpt4 book ai didi

visual-c++ - 未捕获整数除以零异常

转载 作者:行者123 更新时间:2023-12-04 06:53:37 28 4
gpt4 key购买 nike

我一直在通读这本书 Teach Yourself C++ In 21 Days , by Jesse Liberty 并遇到了异常和错误一章。作者使用这个例子:

int top = 10;
int bottom = 0;
try
{
cout << "top divided by bottom = ";
cout << (top / bottom) << endl;
}
catch(...)
{
cout << "something has gone wrong!" << endl;
}

这对他来说效果很好。异常被捕获,输出为:

top divided by bottom = something has gone wrong!

我自己试了一下,报错如下:

Unhandled exception at 0x0124152d in stuff.exe: 0xC0000094: Integer division by zero.

integer division by zero

根据 this thread ,“整数除以零在标准 C++ 中也不异常(exception)。”但是 Visual Studio 显然在此处抛出异常,但并未捕获它。

我尝试将 topbottom 定义为 double,我收到了以下输出:

top divided by bottom = 1.#INF

那么为什么 try catch block 没有捕捉到 整数被零除 异常?

最佳答案

Use /EHa to switch the exception-handling model ,因此非 C++ 异常可以通过 try-catch 捕获。

请注意,如果您这样做,所有异步异常都将转换为同步异常,并且您真的不想捕获大部分异常。
因此,不推荐用于通用代码

顺便说一句,盲目地捕捉所有你能捕捉到的东西是一个众所周知的反模式,只捕捉你真正期望和可以处理的东西。

__try-__except看这里,总能捕获异步异常:http://msdn.microsoft.com/en-us/library/s58ftw19.aspx

关于visual-c++ - 未捕获整数除以零异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26315082/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com