异常是相对较新的C++功能,有些老式编译器可能没有实现.另外有些编译器可能默认关闭这一特性,需要使用编译器选项来打开它. 这里先讨论一个基本问题: 2.0 * x * y / (x+y) 如果y是x的负值,则上述公式将导致被零除.这是一种不允许的运算.很多新式编译器通过生产一个表示无穷大的特殊浮点值来处理. 例如Inf,inf,INF等. 对于这种问题,处理方式之一就是,如果其中一个参数是另一个参数的负值,则调用abort()函数. Abort()函数的原型位于头文件cstdlib中,其典型实现…