c++ 异常exception
创始人
2025-05-29 06:03:10

程序运行过程中由于外界的条件导致程序无法正常运行下去。


好处:有清晰的错误处理代码,将业务逻辑和错误处理分离


抛出异常:

throw ...

throw

throw会带着throw的内容不断向上回溯并终止回溯到的每一级运行到的程序,直到回溯到try

throw的内容通常是本地变量,存储在堆栈中,在退出throw所在的程序段时并不会立即销毁,而是会被throw到向上的层级中。不够会被适当地销毁,在合适的时机。
 


异常捕捉:

catch(...){}

catch到异常后 ,执行catch的内容且不再继续执行try的代码而是向下执行


catch(...)

{

throw;

}   

catch中的throw会自动将catch到的内容throw,无需参数;

这种行为叫做异常的传播(propagate the exception) 

原因:层级不够无法处理当前异常,仅做记录/小调整,交给更高层级处理问题

有多个catch的时候,按照书写顺序,顺序执行,执行catch时会检查,是否完全匹配,是否是catch参数类型的子类(仅限引用和指针???),catch的参数是否是...


catch(...):捕捉所有异常   ...是关键字!!

但是无法获取异常对象

应该作为最后的补救措施


最常用exception:输入输出(I/O设备,网络,通信)


try block:

try{}


declaration with exception specification:

void abc(int a) : throw(MathErr) {...}

在函数abc中,最多抛出MathErr,括号中的所有异常种类(不是一定会抛出)

throw():不抛异常

无throw()声明:不做检查,不知道会抛什么


new:如果内存不够,会抛出bad_alloc异常

catch(bad_alloc& e)


相关内容

热门资讯

cad打印线条粗细设置 cad... 004-线型(下)打印样式设置和线型文件使用一、线宽设置方法制图规范里边的线宽要求,我们已经定义好,...
荼蘼什么意思 岁月缱绻葳蕤生香... 感谢作者【辰夕】的原创独家授权分享编辑整理:【多肉植物百科】百科君坐标:云南 曲靖春而至,季节流转,...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...