编程|编程语言之C ++中的异常处理


编程|编程语言之C ++中的异常处理
文章图片
编程|编程语言之C ++中的异常处理
文章图片
编程|编程语言之C ++中的异常处理
文章图片
编程|编程语言之C ++中的异常处理
文章图片
编程|编程语言之C ++中的异常处理
文章图片
与C相比 , C ++的优点之一是异常处理 。 异常是程序在执行过程中遇到的运行时异常或异常情况 。 有两种类型的异常:a)同步 , b)异步(例如:超出程序的控制范围 , 光盘故障等) 。 为此 , C ++提供了以下专用关键字 。
try:表示可能引发异常的代码块 。
catch:表示当抛出特定异常时执行的代码块 。
throw:用于引发异常 。 也用于列出函数抛出但无法自行处理的异常 。
为什么要进行异常处理?
以下是异常处理相对于传统错误处理的主要优点 。
1.错误处理代码与普通代码的分离:在传统的错误处理代码中 , 总是存在其他条件来处理错误 。 这些条件和处理错误的代码与正常流程混在一起 。 这使得代码的可读性和可维护性较差 。 使用try catch块 , 用于错误处理的代码将与正常流程分开 。
2.函数/方法可以处理他们选择的任何异常: 函数可以引发许多异常 , 但是可以选择处理其中的一些异常 。 引发但未被捕获的其他异常可以由调用方处理 。 如果呼叫者选择不捕获它们 , 则异常由呼叫者的呼叫者处理 。  在C ++中 , 函数可以使用throw关键字指定其引发的异常 。 此函数的调用者必须以某种方式处理异常(通过再次指定它或捕获它)

3.错误类型的分组:在C ++中 , 基本类型和对象都可以作为异常抛出 。 我们可以创建异常对象的层次结构 , 在名称空间或类中对异常进行分组 , 并根据类型对它们进行分类 。
C ++中的异常处理:
1.下面是一个简单的示例 , 以显示C ++中的异常处理 。 程序的输出说明了try / catch块的执行流程 。
输出:
Before try
Inside try
Exception Caught
After catch (Will be executed)

2.有一个特殊的catch块 , 称为“ catch all” catch(…) , 可用于捕获所有类型的异常 。 例如 , 在下面的程序中 , 将引发int作为异常 , 但是没有用于int的catch块 , 因此将执行catch(…)块 。
输出:
Default Exception

3.原始类型不会发生隐式类型转换 。 例如 , 在以下程序中 , “ a”未隐式转换为int
输出:
Default Exception

4.如果引发异常且未在任何地方捕获异常 , 则程序异常终止 。 例如 , 在下面的程序中 , 抛出了一个char , 但是没有catch块来捕获char 。
输出:
抛出“ char”实例后调用

终止
方法 。 此应用程序已请求运行时以一种异常方式终止它 。 请与应用程序的支持团队联系以获取
更多信息 。

我们可以通过编写自己的意外函数来更改此异常终止行为 。
5.派生类异常应在基类异常之前捕获 。 请参阅此以获取更多详细信息 。
6.与Java一样 , C ++库也有一个标准异常类 , 它是所有标准异常的基类 。 标准库的组件抛出的所有对象都派生自此类 。 因此 , 通过捕获此类型可以捕获所有标准异常