和顺电工培训班,和顺电工培训学校
和顺电工培训班,和顺电工培训学校简介:我们在对 vector 做 push 操作的时候,或者对某个指针做 new 操作的时候,如果没有做异常处理,一旦系统内存不够用了,程序是会被 terminate 掉的。这就要求我们
和顺电工培训学校信息内容:,
(给C语言与CPP编程加星标,提升C/C++技能)
作者:melonstreet 整理:cpp开发者
出处:https://www.cnblogs.com/QG-whz/
【导读】:
我们在对 vector 做 push 操作的时候,或者对某个指针做 new 操作的时候,如果没有做异常处理,一旦系统内存不够用了,程序是会被 terminate 掉的。这就要求我们熟悉 C++ 异常,保证日常开发中能正确处理它。本文主要介绍C++ 异常机制的底层原理与实际应用,通俗易懂,快来读一读吧。
以下是正文
C++异常机制概述
异常处理是C++的一项语言机制,用于在程序中处理异常事件。异常事件在 C++ 中表示为
异常对象
。
异常事件发生时,程序使用throw关键字抛出异常表达式,抛出点称为异常出现点,由操作系统为程序设置当前异常对象,然后执行程序的当前异常处理代码块,在含了异常出现点的 内层的
try
块,依次匹配catch语句中的异常对象(只进行类型匹配,catch参数有时在 catch 语句中并不会使用到)。若匹配成功,则执行 catch 块内的异常处理语句,然后接着执行
try...catch...
块之后的代码。如果在当前的 try...catch... 块内找不到
匹配
该异常对象的catch语句,则由更外层的 try...catch... 块来处理该异常;如果当前函数内所有的 try...catch... 块都不能匹配该异常,则递归回退到调用栈的上一层去处理该异常。如果一直退到主函数 main() 都不能处理该异常,则调用系统函数 terminate() 终止程序。
一个 简单的 try...catch... 的例子如下所示。我们有个程序用来记班级学生考试成绩,考试成绩分数的范围在 0-100 之间,不在此范围内视为数据异常:
int main(){ int score=0; while (cin >> score) { try { if (score > 100 || score < 0) { throw score; } //将分数写入文件或进行其他操作 } catch (int score) { cerr 100 || score < 0) throw score; //throw语句被含在外层main的try语句块中 //将分数写入文件或进行其他操作}int main(){ int score=0; while (cin >> score) { try { registerScore(score); } catch (int score) { cerr .
(编辑:和顺电工培训学校)