首页 > 编程语言 >c++ primer plus 第15章友,异常和其他:15.3.1 调用abort()02

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

时间:2024-07-08 20:59:58浏览次数:13  
标签:02 std 15.3 15 cout hmean abort 程序 调用

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的值。然而,依靠程序员来执行这种检查是不安全的。

标签:02,std,15.3,15,cout,hmean,abort,程序,调用
From: https://blog.csdn.net/zhyjhacker/article/details/140278544

相关文章

  • c++ primer plus 第15章友,异常和其他:异常,15.3.3 异常机制
    #c++primerplus第15章友,异常和其他:异常,15.3.3异常机制异常,15.3.3异常机制文章目录15.3.3异常机制15.3.3异常机制程序清单15.9error3.cpp程序清单15.10excmean.h程序清单15.11error4.cpp15.3.3异常机制15.3.3异常机制下面介绍如何使用异常机制来处......
  • 必经之路-美团2023笔试(codefun2000)
    题目链接必经之路-美团2023笔试(codefun2000)题目内容塔子哥的班主任最近组织了一次户外拓展活动,让班里的同学们一起去爬山。在路上,塔子哥看到了一棵漂亮的树,他对这棵树产生了浓厚的兴趣,开始观察并记录这棵树的一些特征。塔子哥发现这棵树有n个节点,其中有一条边被特......
  • 国开大学2024《电子商务法律与法规(统设课)》
    一、单选题1.2017年8月18日()挂牌成立,这是全国第一家集中审理涉网案件的试点法院。A.北京互联网法院B.广州互联网法院C.杭州互联网法院D.上海互联网法院答案:C2.电子合同是平等主体之间以()的形式达成的,设立、变更、终止民事权利义务关系的协议。A.电子签名B.数......
  • MVME147-023 单板计算机
    型号:MVME147-023类别:单板计算机配置:•33MHzMC68030微处理器•33.33MHzMC6888协处理器•16MBDRAM•(2)BIOS芯片•以太网收发器接口•SCSI总线接口单板计算机是基于单一电路板而构建的完整计算机系统,其核心架构......
  • YC311A [ 20240701 CQYC省选模拟赛 T1 ] 好串(good)
    题意给定一个长度为\(n\)的\(01\)串。定义一个串是好的当且仅当该串的所有前缀以及所有后缀的\(1\)的数量大于等于\(0\)的数量。你需要维护\(q\)个查询,每次求\(S_{l,...,r}\)的子串最少添加的\(1\)的个数使得该子串是好的。Sol首先不难发现一个正确的贪心,也......
  • 题解:洛谷 P2678 [NOIP2015 提高组] 跳石头
    题解:洛谷P2678[NOIP2015提高组]跳石头标签:二分,贪心题意给定一个数列,\(a_0=0,a_{N+1}=L\),从其中删除不超过\(M\)个数,使得\(a_i-a_{i-1}\)的最小值最大。思路从最小值最大不难想到二分答案。统计\(a_i-a_j<mid\)的数量\(k\),如果不满足的话说明不删,\(j\getsi\)。......
  • Solution - Atcoder ARC150D Removing Gacha
    考虑到每次操作都比定会选上一个点,于是答案可以表示为每个点被选中的次数之和。即令\(c_i\)为\(i\)点被选中的次数,答案即为\(E(\sum\limits_{i=1}^nc_i)\)。根据期望的线性性,考虑把答案的\(E\)拆到每个\(c_i\)上,即变为\(\sum\limits_{i=1}^nE(c_i)\)的形式。......
  • Asun安全学习【漏洞复现】CVE-2023-38831 WinRAR代码执行漏洞
    (ps:本人是小白,复现漏洞来进行安全学习,也借鉴了许多大佬的研究内容,感谢各位大佬进行指导和点评。)[漏洞名称]:CVE漏洞复现-CVE-2023-38831WinRAR代码执行漏洞[漏洞描述]:WinRAR是一款功能强大的Windows文件压缩和解压缩工具,支持高效的压缩算法、密码保护、分卷压缩、恢复记录等......
  • C++ 入门02:控制结构和循环
    往期回顾:C++入门01:初识C++一、前言在上一篇文章学习中,我们了解了C++程序的基本结构、注释、数据类型、变量以及输入输出的基本用法。这一篇,我们将继续深入学习C++的控制结构和循环。二、控制结构和循环2.1、条件语句条件语句是编程中非常重要的一部分,它们允许......
  • 北京一零一中2024年信息学迎新马拉松解题报告
    AT469715[2024迎新马拉松]101相当于选择一段长度为\(3k\)的区间使得变化的总值最小。维护每一个元素变化到\(1\)与\(0\)的要求数量,之后前缀和处理即可。#include<bits/stdc++.h>#defineendl"\n"usingnamespacestd;typedeflonglongll;constllMAXN=1e6+5;......