第10课 C++异常简介
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++异常简介的更多相关文章
- 第十课 C++异常简介
异常不是错误,异常是程序中可预料到的另一条执行分支,是可预见的.错误是不可预料的. C++内置了异常处理的语法元素try...catch...,如下: C++通过throw语句抛出异常信息: 上图中t ...
- Java异常(一) Java异常简介及其架构
概要 本章对Java中的异常进行介绍.内容包括:Java异常简介Java异常框架 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3544168.html ...
- Java异常简介、异常捕获还是上抛总结
概要 本章对Java中的异常进行介绍.内容包括:1.Java异常简介2.Java异常框架 一.Java异常简介 Java异常是Java提供的一种识别及响应错误的一致性机制. Java异常机制可以使程序 ...
- Java异常(一)Java异常简介及其框架
Java异常(一)Java异常简介及其框架 概要 本章对Java中的异常进行介绍.内容包括:Java异常简介Java异常框架 Java异常简介 Java异常是Java提供的一种识别及响应错误的一致性机 ...
- JDBC 异常简介 jDBC简介(六)
SQL 异常简介 对于数据库的操作访问,必然也很可能抛出异常. JDBC中定义了SQLException,用于描述数据库相关操作中可能出现的异常情况. java.sql.SQLException ...
- 第10课_dg
export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1 export ORACLE ...
- 第10课 OpenGL 3D世界
加载3D世界,并在其中漫游: 在这一课中,你将学会如何加载3D世界,并在3D世界中漫游.这一课使用第一课的代码,当然在课程说明中我只介绍改变了代码. 这一课是由Lionel Brits (βtelge ...
- node基础10:处理异常
1.处理异常 当发生异常时,如果不作处理,那么服务器会奔溃.由于node的异步调用的特性,所以不但要考虑主程序的异常,还有处理异步调用的异常. 代码如下: /** * server.js */ var ...
- Java异常简介
异常指异于常态,和正常情况不一样,有错误出现.阻止当前方法或作用域执行的问题,称之为异常. Java中所有的与异常有关的类都继承于Throwable类,Throwable类有两个儿子,一个是Error ...
随机推荐
- MyEclipse 10 中安装Android ADT 22插件的方法
MyEclipse 10 中安装Android ADT 22插件的方法 下载ADT包:http://dl.google.com/android/ADT-22.0.0.zip 将ADT-22.0.0.z ...
- postman--安装及Interceptor插件
1. 官网安装(看网速-我下载的时候一直下载失败) 打开官网,https://www.getpostman.com 选择ios或者win 2. 非官网安装 https://pan.baidu. ...
- 搭建一个SVN
1--------------------------------------首先需要下载SVN---------------------------------------------------- ...
- HDU 3046
http://acm.hdu.edu.cn/showproblem.php?pid=3046 典型的最小割模型 #include <iostream> #include <cstdi ...
- SVN使用出现的问题及解决方案
SVN使用出现的问题及解决方案 一.问题描述: 使用TortoiseSVN-1.9.5进行CheckOut时,出现报错信息如下: Unable to connect to a repository ...
- iOS-----使用NSOperation与NSOperationQueue实现多线程
使用NSOperation与NSOperationQueue实现多线程 NSOperation与NSOperationQueue的基本理论如下. NSOperationQueue 代表一个FIFO的队 ...
- Linux C socket 封装
/************************************************************************** * Linux C socket 封装 * 声明 ...
- word-如何将文字设置为插入超链接
前言 使用word有时候想要将文字部分设置为插入超链接,本文对此进行介绍. 操作步骤 1. 输入需要插入链接的文字部分: 2. 选中文字部分单击右键,点击超链接进行插入: 具体操作如下图所示: 参考 ...
- Unity 3D游戏-NPC对话系统With XML
用XML做的Unity NPC对话系统 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 Create X ...
- CodeForces - 457C:Elections(三分)
You are running for a governor in a small city in Russia. You ran some polls and did some research, ...