C++异常是对程序运行过程中发生的异常情况(如被0除)的一种响应。异常提供了将控制权从程序的一个部分传递到另一部分的途径。

1、对异常的处理有3个部分组成:

(1)引发异常

(2)捕获有处理程序的异常

(3)使用try块

C++异常的简单例子:

double hmean(double a,double b)
{
if (a == -b)
throw "bad hmean() arguments: a = -b not allowed";//引发异常
return 2.0 * a * b / (a + b);
} void test_exception()
{
double x, y, z;
cout << "Enter two number:";
while (cin >> x >> y)
{
//使用try catch进行异常捕获和处理
try
{
z = hmean(x,y);
}
catch (const char * s)
{
cout << s << endl;
cout << "Enter a new pair of numbers:";
continue;
}
cout << "Result:" << z << endl;
cout << "Enter next two numbers:";
}
cout << "Quit";
}

运行情况如下:

aaarticlea/png;base64,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" alt="" />

异常类型可以是字符串或其他C++类型,通常为类类型。

将类对象作为异常类型的例子:

class bad_hmean
{
private:
double v1;
double v2;
public:
bad_hmean(int a = 0, int b = 0)
:v1(a)
,v2(b)
{ }
void mesg()
{
cout << "hmean(" << v1 << "," << v2 << "):" << "Invalid arguments: a = -b\n";
}
}; //使用异常规范对函数定义进行限定,指出它将引发那些类型的异常
double hmean(double a,double b) throw(bad_hmean)
{
if (a == -b)
throw bad_hmean(a,b);//引发异常
return 2.0 * a * b / (a + b);
} void test_exception()
{
double x, y, z;
cout << "Enter two number:";
while (cin >> x >> y)
{
//使用try catch进行异常捕获和处理
try
{
z = hmean(x,y);
}
catch (bad_hmean & bh)
{
bh.mesg();
cout << "Enter a new pair of numbers:";
continue;
}
cout << "Result:" << z << endl;
cout << "Enter next two numbers:";
}
cout << "Quit";
}

2、exception异常类

在C++中,exception通常作为其他异常类的基类

C++基本异常类的层次结构:

exception:

--logic_error  (典型的逻辑错误)

domain_error  (参数不在定义的范围)

invalid_argument (非法的参数)

length_error (没有足够空间来执行所需操作)

out_of_bounds (索引错误)

--runtime_error (运行期间发生但难以预计和防范的错误)

range_error

  overflow_error

underflow_error

--bad_alloc 内存分配导致的异常

如果上述异常类,无法满足要求,应当从logic_error 或runtime_error派生一个异常类,以确保自定义的异常类可以归入同一个继承层次结构中。

关于异常需要注意的地方:

(1)异常规范不适用于模版,因为模版函数引发的异常可能随特定的具体化而异。

(2)异常处理虽然很重要,但会增加编程的工作量,增大程序,降低程序的速度。

C++学习笔记--异常简介的更多相关文章

  1. Linux内核学习笔记-1.简介和入门

    原创文章,转载请注明:Linux内核学习笔记-1.简介和入门 By Lucio.Yang 部分内容来自:Linux Kernel Development(Third Edition),Robert L ...

  2. React学习笔记 - JSX简介

    React Learn Note 2 React学习笔记(二) 标签(空格分隔): React JavaScript 一.JSX简介 像const element = <h1>Hello ...

  3. CUBRID学习笔记 1 简介 cubrid教程

    CUBRID 是一个全面开源,且完全免费的关系数据库管理系统.CUBRID为高效执行Web应用进行了高度优化,特别是需要处理大数据量和高并发请求的复杂商务服务.通过提供独特的最优化特性,CUBRID可 ...

  4. shiro学习笔记_0100_shiro简介

    前言:第一次知道shiro是2016年夏天,做项目时候我要写springmvc的拦截器,申哥看到后,说这个不安全,就给我捣鼓了shiro,我就看了下,从此认识了shiro.此笔记是根据网上的视频教程记 ...

  5. Mybatis-Plus 实战完整学习笔记(一)------简介

    第一章    简介      1. 什么是MybatisPlus                MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只 ...

  6. symfony学习笔记1—简介

    1.symfony快速入门还是先看代码结构把,这个是拿到代码的第一印象,app/:整个应用的配置,模版,translations,这个可能是多语言文件什么,src/:项目php文件,vendor/:第 ...

  7. GO 基础学习笔记(1) | 简介

    一.官网查看系列 Golang官网:https://golang.org/ Golang中文网:https://studygolang.com/(推荐) 项目学习网站: https://gowalke ...

  8. 01-tornado学习笔记-Tornado简介

    01-Tornado简介   Tornado是使用Python编写的一个强大的.可扩展的Web服务器.它在处理严峻的网络流量时表现得足够强健,但却在创建和编写时有着足够的轻量级,并能够被用在大量的应用 ...

  9. ElasticSearch学习笔记-01 简介、安装、配置与核心概念

    一.简介 ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎.设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便.支持通过HTTP使用JSON进 ...

随机推荐

  1. 对于try catch放在能够很好地处理例外的位置

    Exception有一个message属性.在使用catch的时候可以调用: Catch(IOException e){System.out.println(e.message())}; Catch( ...

  2. json转datatable(正则表达式的方法)

    /// <summary> /// 将json转换为DataTable /// </summary> /// <param name="strJson" ...

  3. A mail sent to Google chromium.org Groups for Help

    Hi, I've ported Chromium M39 to 4.4 using WebView. The main modifications are: I changed AwContents: ...

  4. ListView中的方法

    getCount(); getItem(); getItemId(); getView(); getViewCountType();

  5. 【iOS开发】 AudioSession设置, 切换扬声器和听筒详解-保留其他应用音乐(备忘)

    本文转载至 http://blog.sina.com.cn/s/blog_693de6100101f1g8.html (2013-04-10 17:25:24) 转载▼ 标签: audiosessio ...

  6. GO函数总结(转)

    GO语言函数与C,JAVA等有点很大的区别,大致如下: 一.函数的定义 例如: func max(a, b int) int{//返回a,b里面最大的一个,而且要注意函数的参数和返回值类型是怎么定义的 ...

  7. Django学习笔记第一篇--Hello,Django

    一.Django的安装: 1.python虚拟运行的环境的安装以及安装django: sudo pip install virtualenv export VIRTUALENV_DISTRINUTR= ...

  8. 【BZOJ1495】[NOI2006]网络收费 暴力+DP

    [BZOJ1495][NOI2006]网络收费 Description 网络已经成为当今世界不可或缺的一部分.每天都有数以亿计的人使用网络进行学习.科研.娱乐等活动.然而,不可忽视的一点就是网络本身有 ...

  9. 小程序用scroll-view的scroll-to-view属性实现锚链接跳转

    小程序没有锚链接,通过scroll-view可以实现类似锚链接的功能,点击锚链接,滚动条滚动到相应的位置 wxml <view class="wrap"> <!- ...

  10. Zabbix监控Windows主机

    一,下载zabbix-agent 下载地址:http://www.zabbix.com/downloads/3.0.0/zabbix_agents_3.0.0.win.zip 已经下载好的文件 zab ...