C++“异常处理”

异常的概念

一、语法错误

在编写程序是,程序中的关键字拼写错、标识符未定义、控制结构不完整、程序语句不合乎编译器的语法规则等,这种错误在编译、连接是由表编译器指出。

二、逻辑错误

由于编程者对问题的理解不够造成算法设计有误,导致程序虽然能顺利运行,但是没有得到预期的结构,这类错误通过调试与测试发现。

三、运行错误

程序在运行的过程中由于意外的结果,运行环境问题造成程序异常种植,如内存空间不足、打开文件不存在、文件读写不成功、执行了除0操作等。

C++异常处理机制

一、异常处理

C++的异常处理引入了三个关键字try(检测异常)、throw(抛出异常)、catch(捕获异常),利用这种结构化的形式来描述异常处理过程。

二、各异常处理作用

1、try负责监视可能出现异常的程序段,当程序运行中出现异常时,他会检测出这个异常,程序将不能再沿着正常的程序逻辑路径前进。

2、throw负责抛出异常,并将程序控制权交给catch子句。

3、catch负责捕获异常,并对不同的异常进行相应的处理。

三、各语句块格式

1、try函数:语句块中的程序语句执行是产生的异常,然后抛出异常。

try

{

//程序执行语句序列

}

2、throw函数:在发生异常时抛出产生异常对象。

throw(异常类型表达式);

3、catch函数:语句块用于铺货匹配throw抛出的异常对象,然后进行处理。

catch(异常类型)

{

//异常处理语句序列

}

四、异常处理的执行过程

1、执行try块中的程序语句序列;

2、执行期间没有执行到throw()(没有引起异常),则跳过异常处理区的catch语句块,程序向下执行;

3、若执行期间引起异常,则执行throw()语句抛出异常,进入异常处理区,将throw()抛出的异常类型表达式(对象)依次与catch()中的类型匹配,获得匹配的catch子句将捕获并处理异常,继续执行异常处理区域后的语句;

4、如果未找到匹配的异常处理子句(异常未捕获到),程序自动调用结束函数terminate()(函数terminate将通知用户且系统终止程序的运行)。即使不能处理某种异常,也应该编写代码来捕获这个异常,并在退出之前输出一条合适的错误消息。

在函数中抛出异常使程序保持良好的结构,嵌套调用的函数内层抛出的异常从内层逐层向外传递。传递的异常被捕获,函数开始退栈过程。

时间: 2024-12-12 19:14:31

C++“异常处理”的相关文章

Laravel 5.4 中的异常处理器和HTTP异常处理实例教程

错误和异常是处理程序开发中不可回避的议题,在本地开发中我们往往希望能捕获程序抛出的异常并将其显示打印出来,以便直观的知道程序在哪里出了问题并予以解决,而在线上环境我们不希望将程序错误或异常显示在浏览器中(出于安全考虑),这个时候我们仍然要捕获异常,只不过不是显示到浏览器中,而是记录到日志中,方便日后排查问题. 百牛信息技术bainiu.ltd整理发布于博客园 Laravel当然支持PHP原生的错误和异常处理,但是在此基础上进行了一些封装处理,从而更方便在不同开发环境切换以及对错误和异常的处理.

跟着百度学PHP[11]-PHP当中的异常处理

首先要说一下常见的三种错误: 1.语法错误 2.运行错误 3.逻辑错误 00x1 错误报告及错误级别 PHP的错误分为三个等级 1.注意(notice)   没有变量a 2.警告(warning) 没有给函数传值 3.致命的错误(fatal error) 函数写错 错误的报告级别可以在PHP.ini当中修改.在PHP.ini当中找到错误报告“error_reporting = E_ALL ” 这个的意思是将所有的错误都提示出来.ps:~是除了的意思.&是和的意思.error_reporting

JAVASE02-Unit08: 文本数据IO操作 、 异常处理

Unit08: 文本数据IO操作 . 异常处理 * java.io.ObjectOutputStream * 对象输出流,作用是进行对象序列化 package day08; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.util.ArrayList; import java.util.List; /** * java.io.Ob

python3_装饰器_异常处理

装饰器: def auth(func):     def wrapper(name):                     如果函数带参数,要加在这里         user=raw_input("input passwd:").strip()         if user=='test':             print "welcome login"             func(name)              如果函数带参数,要加在这里

动手动脑(异常处理)

1.请阅读并运行AboutException.java示例,然后通过后面的几页PPT了解Java中实现异常处理的基础知识. import javax.swing.*; class AboutException { public static void main(String[] args) { float i=1, j=0, k; k=i/j; System.out.println(k); try { k = i/j;    // Causes division-by-zero exceptio

异常处理

我们在使用Java语言高级API进行程序设计之前,我们还需要理解Java语言中另一个基础特色-----异常处理 异常(Exception)是程序在执行过程中所产生的问题.导致异常产生的原因有很多种: 用户输入了无效的数据.找不到一个需要打开的文件.在通讯过程中网络连接断开或者JVM发生了内存溢出 异常的分类: 检查异常-----是用户错误或不能被程序所遇见的问题 运行时异常-----是一个程序在运行过程可能发生的问题 错误-------实际上,错误根本不是异常,但却是用户或程序所无法控制的问题

Java异常处理

异常的层次结构 所有的异常类都是 java.lang.Exception 类的子类型.异常类都是 Throwable 类的子类.除了异常类 Error 类也是由 Throwable 类产生的的子类1. public String getMessage() 返回关于发生异常的细节信息,这些信息在Throwable的构造函数中被初始化2. public Throwable getCause() 返回发生异常的原因,由 Throwable 对象来表示3. public String toString(

SpringMVC 异常处理

一.异常解析器应该具有的功能: 1.既然使用异常解析器,那么就不必在Controller中对异常进行处理,抛出即可,简化开发,异常统一控制. 2.ajax请求(有@ResponseBody的Controller)发生错误,输出JSON. 3.页面请求(无@ResponseBody的Controller)发生错误,输出错误页面. 4. 它需要与AnnotationMethodHandlerAdapter使用同一个messageConverters 5.异常处理细节可控制. 二.SpringMVC异

16.如何自学Struts2之Struts2异常处理[视频]

16.如何自学Struts2之Struts2异常处理[视频] 之前写了一篇"打算做一个视频教程探讨如何自学计算机相关的技术",优酷上传不了,只好传到百度云上: http://pan.baidu.com/s/1kTDsa95 有问题可以直接回复这篇文章.

详解Linux内核异常处理体系结构

本节内容:Linux内核异常处理的的初始化过程和异常发生时的处理流程. [首先来区分一下两个概念:中断(Interrupt)和异常(Exception).中断属于异常的一种,就拿2440开发板来说,他有60多种中断源,例如来自DMA控制器.UART.IIC和外部中断等.2440有一个专门的中断控制器来处理这些中断,中断控制器在接收到这些中断信号之后就需要ARM920T进入IRQ或FIQ模式进行处理,这两种模式也是中断异常的仅有模式.而异常的概念要广的多,它包括复位.未定义指令.软中断.IRQ等等