异常捕获int除以0

Ank*_*rya 1 c++ exception

最近我在C++中尝试了一个简单的异常程序,如下所示: -

#include <iostream>
#include <exception>
#include <stdexcept>
using namespace std;
int main()
{
    int x=5, y=0;
    try
    {
       int z=x/y;
       cout<<"z="<<z;
    }
    catch (exception& e)
    {
       cout<<"exception caught: "<<e.what();
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么这里没有例外?代码有什么问题?另外我想知道为什么&需要捕获异常?

Rah*_*thi 10

除以零时的任何整数在标准C++中都不是例外.

C++的5.6节规定:

如果/或%的第二个操作数为零,则行为未定义.

您可能还会发现阅读此内容很有趣:

Stroustrup在"C++的设计和演变"(Addison Wesley,1994)中说,"低级事件,例如算术溢出和除以零,假定由专用的低级机制而不是异常处理这使C++在算术运算时能够匹配其他语言的行为.它还避免了在流水线严重的体系结构中出现的问题,其中除以零之类的事件是异步的."