开发者社区> yichudu> 正文

c++异常

简介: assert ()断言,为真继续,为假终止。 异常处理更为高级,可处理相应异常。   C++的异常处理引入了三个关键字 try(检测异常)、throw(抛出异常)、catch(捕获异常)。 try 负责监视可能出现异常的程序段。若该段出现异常,程序将不再按原有流程走,而是被throw抛出异常,程序控制权交给catch子句,然后从catch块处顺序执行。 try 与 catch 语
+关注继续查看

assert ()断言,为真继续,为假终止。

异常处理更为高级,可处理相应异常。

 

C++的异常处理引入了三个关键字 try(检测异常)throw(抛出异常)catch(捕获异常)

try 负责监视可能出现异常的程序段。若该段出现异常,程序将不再按原有流程走,而是被throw抛出异常,程序控制权交给catch子句,然后从catch块处顺序执行。

try 与 catch 语句块必须紧连。

异常处理机制可以将正常语句与异常处理语句分开表示,使逻辑结构更清晰。

异常处理流程:

1.执行try{}块中的语句。

2.若没有引起异常,则跳过catch块继续执行。

3.若引起异常,并由throw抛出,则进入catch块。

4.若未找到区配异常的catch块,程序自动调用系统函数terminate()结束自己。

 

调试时会输出异常,而正式运行时却不会执行catch{}里面的语句,暂时不懂。

 

异常中断了程序的正常流程,所以异常涉及到的对象可能为无效状态。那些在异常发生期间正确执行了“清理”工作的代码被称作是异常安全

例一:

例二:

stdexcept头文件定义了常见的异常类,runtime_error是其中一个,what()是它的成员函数,返回创建异常对象时的字符串参数。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
一次linux中定位c++程序运行异常的经历
一次linux中定位c++程序运行异常的经历
62 0
C++第十一节——单例模式 C++11 智能指针 异常 有关讲述
可以用同样的方式来实现,就是将构造函数私有化,然后让创建类的时候只能通过一个接口函数来实现,而在这个接口函数中我们将其创建在栈上。
75 0
成功解决VS编译环境下C++语言出现的异常提示:烫烫烫烫烫烫烫烫烫烫
成功解决VS编译环境下C++语言出现的异常提示:烫烫烫烫烫烫烫烫烫烫
516 0
c++学习笔记之异常
1、异常 详细见《c++异常分类》 基类exception有一个virtual函数what,返回错误信息(构造函数设定的)。 基类exception的派生类有runtime_error(运行时错误,运行后检测)、logic_error(逻辑错误,运行前检测)和运算符抛出的异常。 运算符抛出的异常包括:bad_alloc(new抛出),bad_cast(dynamic_cast抛出),bad_typeid(typeid抛出),bad_exception
54 0
【C++ 语言】异常 ( 抛出字符串异常 | 抛出异常对象 | 抛出任意对象 | 抛出自定义异常 )(一)
【C++ 语言】异常 ( 抛出字符串异常 | 抛出异常对象 | 抛出任意对象 | 抛出自定义异常 )(一)
39 0
【C++ 语言】异常 ( 抛出字符串异常 | 抛出异常对象 | 抛出任意对象 | 抛出自定义异常 )(一)
【C++ 语言】异常 ( 抛出字符串异常 | 抛出异常对象 | 抛出任意对象 | 抛出自定义异常 )(一)
162 0
成功解决VS编译环境下C++语言出现的异常提示:烫烫烫烫烫烫烫烫烫烫
成功解决VS编译环境下C++语言出现的异常提示:烫烫烫烫烫烫烫烫烫烫
473 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
继承与功能组合
立即下载
对象的生命期管理
立即下载
移动与复制
立即下载