c++ primer plus 第15章友,异常和其他:15.3.1 调用abort()02

c++ primer plus 第15章友,异常和其他:15.3.1 调用abort()02

调用abort()02



15.3.1 调用abort()

对于这种问题,处理方式之一是,如果其中一个参数是另一个参数的负值,则调用 abort()函数。Abort()函数的原型位于头文件 cstdlib(或stdlib.h)中,其典型实现是向标准错误流(即 cer 使用的错误流)发送消息 abnormal program termination(程序异常终止),然后终止程序。它还返回一个随实现而异的值,告诉操作系统(如果程序是由另一个程序调用的,则告诉父进程),处理失败。abort()是否刷新文件缓冲区(用于存储读写到文件中的数据的内存区域)取决于实现。如果愿意,也可以使用exi(),该函数刷新文件缓冲区,但不显示消息。程序清单15.7是一个使用abort()的小程序。
程序清单15.7 error1.cpp

//error1.cpp -- using the abort() function
#include <iostream>
#include <cstdlib>
double hmean(double a, double b);

int main()
{
    double x, y, z;

    std::cout << "Enter two numbers: ";
    while (std::cin >> x >> y)
    {
        z = hmean(x,y);
        std::cout << "Harmonic mean of " << x << " and " << y
            << " is " << z << std::endl;
        std::cout << "Enter next set of numbers <q to quit>: ";
    }
    std::cout << "Bye!\n";
    return 0;
}

double hmean(double a, double b)
{
    if (a == -b)
    {
        std::cout << "untenable arguments to hmean()\n";
        std::abort();
    }
    return 2.0 * a * b / (a + b); 
}

注意,在 hmean()中调用 abor()函数将直接终止程序,而不是先返回到main()。一般而言,显示的程序异常中断消息随编译器而异,下面是另一种编译器显示的消息:

This application has requested the Runtime to terminate itin an unusual way. Please contact the application's supportteam for more information.

为了避免异常终止,程序应在调用hmean()函数之前检查x和y的值。然而,依靠程序员来执行这种检查是不安全的。

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值