最近我在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++在算术运算时能够匹配其他语言的行为.它还避免了在流水线严重的体系结构中出现的问题,其中除以零之类的事件是异步的."