1. try-catch语句

(1)try语句处理正常代码逻辑

(2)catch语句处理异常情况

(3)try语句中的异常由对应的catch语句处理

(4)C++通过throw语句抛出异常信息

2. C++异常处理分析

(1)throw抛出的异常必须被catch处理

  ①当前函数能够处理异常,程序继续往下执行

  ②当前函数无法处理异常,则函数停止执行并返回

(2)未被处理的异常会顺着函数调用栈向上传播,直到被处理为止,否则程序将停止执行。

(3)同一个try语句可以跟上多个catch语句

  ①catch语句可以定义具体处理的异常类型

  ②不同类型的异常由不同的catch语句负责处理

  ③try语句中可以抛出任何类型的异常

  ④catch(…)用于处理所有类型的异常

  ⑤任何异常都只能被捕获(catch)一次

(4)异常处理的匹配规则

【编程实验】C++异常处理

//main.cpp

#include <iostream>

using namespace std;

double divide(double a, double b)
{
const double delta = 0.000000000000001;
double ret = ; if( !((-delta < b) && ( b < delta))){
ret = a / b;
}else{
throw ; //产生除0异常
} return ret;
} //匹配规则(自上而下,严格匹配、不进行类型转换)
void Demo1()
{
try{
throw 'c'; //抛出字符型的异常
}catch(int i){
cout << "catch(int i)" << endl;
}catch(double d){
cout << "catch(double d)" << endl;
}catch(char c){ //只能被这里的catch捕获
cout << "catch(char c)" << endl;
}
} void Demo2()
{
throw "Demo2"; //const char*
}
int main()
{
cout << "main() begin" << endl; try{
double c = divide(, );//产生异常
cout <<"c = " << c << endl; //无法被执行到!
}catch(...){
cout << "Divide by zero..." << endl;
} Demo1(); try{
Demo2();
}catch(char* c){
cout << "catch(char* c)" << endl;
}catch(const char* c){
cout << "catch(const char* c)" << endl;
}catch(...){
cout << "catch(...)" << endl;
} cout << "main() end" << endl;
return ;
}
/*输出结果
main() begin
Divide by zero...
catch(char c)
catch(const char* c)
main() end
*/

3. 小结

(1)C++中直接支持异常处理的概念

(2)try…catch…是C++中异常处理的专用语句

(3)try语句处理正常代码逻辑,catch语句处理异常情况

(4)同一个try语句可以跟上多个catch语句

(5)异常处理必须严格匹配,不进行任何的类型转换

第10课 C++异常简介的更多相关文章

  1. 第十课 C++异常简介

    异常不是错误,异常是程序中可预料到的另一条执行分支,是可预见的.错误是不可预料的. C++内置了异常处理的语法元素try...catch...,如下: C++通过throw语句抛出异常信息: 上图中t ...

  2. Java异常(一) Java异常简介及其架构

    概要 本章对Java中的异常进行介绍.内容包括:Java异常简介Java异常框架 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3544168.html ...

  3. Java异常简介、异常捕获还是上抛总结

    概要 本章对Java中的异常进行介绍.内容包括:1.Java异常简介2.Java异常框架 一.Java异常简介 Java异常是Java提供的一种识别及响应错误的一致性机制. Java异常机制可以使程序 ...

  4. Java异常(一)Java异常简介及其框架

    Java异常(一)Java异常简介及其框架 概要 本章对Java中的异常进行介绍.内容包括:Java异常简介Java异常框架 Java异常简介 Java异常是Java提供的一种识别及响应错误的一致性机 ...

  5. JDBC 异常简介 jDBC简介(六)

    SQL 异常简介 对于数据库的操作访问,必然也很可能抛出异常. JDBC中定义了SQLException,用于描述数据库相关操作中可能出现的异常情况. java.sql.SQLException    ...

  6. 第10课_dg

    export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1 export ORACLE ...

  7. 第10课 OpenGL 3D世界

    加载3D世界,并在其中漫游: 在这一课中,你将学会如何加载3D世界,并在3D世界中漫游.这一课使用第一课的代码,当然在课程说明中我只介绍改变了代码. 这一课是由Lionel Brits (βtelge ...

  8. node基础10:处理异常

    1.处理异常 当发生异常时,如果不作处理,那么服务器会奔溃.由于node的异步调用的特性,所以不但要考虑主程序的异常,还有处理异步调用的异常. 代码如下: /** * server.js */ var ...

  9. Java异常简介

    异常指异于常态,和正常情况不一样,有错误出现.阻止当前方法或作用域执行的问题,称之为异常. Java中所有的与异常有关的类都继承于Throwable类,Throwable类有两个儿子,一个是Error ...

随机推荐

  1. ASI 实现注册方法的小例子(get和post方式)

    服务端文档: 注册 /my/register.php 输入参数: 参数说明: username 用户名 password 密码 email 邮箱 成功返回值:{"code": &q ...

  2. python3.6 ubuntu

    apt-get install python3.6-dev 安装 pip install mysqlclient 必备

  3. Linux下mysql操作

    1.linux下MYSQL的启动与访问 http://www.cnblogs.com/hunter007/articles/2251795.html 2.linux下mysql基本的操作 http:/ ...

  4. hadoop之HDFS运行小观察

    hadoop 是当前很火的一个  大数据运行框架和平台, 对于这个神奇的大家伙我甚是搞不清楚,前段时间闲来无视便把 HADOOP 运行起来, 看着它的操作记录存储部分(操作日志), IMAGE 记录着 ...

  5. C#单例的多种写法

    单例的细分写法 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 最吊大的 一种--C#这样的高级语言特有 ...

  6. Ubuntu终端及VI 快捷键

    Ubuntu终端 快捷键 功能 Tab 自动补全 Ctrl+a 光标移动到开始位置 Ctrl+e 光标移动到最末尾 Ctrl+k 删除此处至末尾的所有内容 Ctrl+u 删除此处至开始的所有内容 Ct ...

  7. Executor 框架详解

    框架最核心的类是ThreadPoolExecutor,它是Java线程池的实现类,通过Executors工具类,可以创建3种类型的ThreadPoolExecutor: 首先附上ThreadPoolE ...

  8. HPU 第三次积分赛:阶乘之和(水题)

    阶乘之和 描述 对于整数pp,给出以下定义 p=x_{1}!+x_{2}!+x_{3}!+...+x_{q}!(x_{i}<x_{j}for\ all\ i<j )p=x1​!+x2​!+ ...

  9. PAT 团体程序设计天梯赛 L1-046 整除光棍(模拟除法)

    L1-046. 整除光棍 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 翁恺 这里所谓的"光棍",并不是指单身汪 ...

  10. day25 python学习 继承,钻石继承

    通过一个列子认识父类和子类中,子类的如何实现对父类默认属性调用,同时拥有自己的属性,如何在子类中调用父类的方法,class Ainmal: country='afdas' def __init__(s ...