初探C++异常处理学习笔记
来源:互联网 发布:淘宝售假违规扣2分 编辑:程序博客网 时间:2024/06/07 05:12
异常处理
异常处理基础
用try、catch处理异常
#include <iostream>using namespace std;int main() { double m ,n; cin >> m >> n; try { cout << "before dividing." << endl; if( n == 0) throw -1; //抛出整型异常 else if( m == 0 ) throw -1.0; //抛出double型异常 else cout << m / n << endl; cout << "after dividing." << endl;} catch(double d) { cout << "catch(double) " << d << endl;} catch(...) { cout << "catch(...) " << endl;} cout << "finished" << endl; return 0;}
说明
1.在可能发生异常的地方,添加一个try块,并且加入throw语句,在异常发生时抛出异常。
2.若不发生异常,则跳过后续的catch语句,正常执行。
3.若发生异常则立即停止try块的语句,搜寻catch语句并匹配该异常对应的处理语句。
4.若找不到对应的catch处理语句则可能使程序崩溃。
5.catch(...)可能匹配任何异常。
6.异常的匹配是从上到下开始的。
程序运行结果:
<1>
9 0
before dividing
catch(...)
finished
<2>
0 6
before dividing
catch (double) -1
finished
注:
如果一个函数在执行的过程中,抛出的异常在本函数内就被catch块捕获并处理了,那么该异常就不会抛给这个
函数的调用者(也称“上一层的函数”);如果异常在本函数中没被处理,就会被抛给上一层的函数。
标准异常类
常见的几种异常
bad_cast
在用 dynamic_cast进行从多态基类对象(或引用),到派生类的引用的强制类型转换时,如果转换是不安全的,则会
抛出此异常。
见此博客最后一点初探C++强制类型转换
try { Derived & rd = dynamic_cast<Derived&>(b); //此转换若不安全,会抛出bad_cast异常 rd.Print();}catch (bad_cast& e) { cerr << e.what() << endl;}
bad_alloc
在用new运算符进行动态内存分配时,如果没有足够的内存,则会引发此异常。
try { char * p = new char[0x7fffffff]; //无法分配这么多空间,会抛出异常} catch (bad_alloc & e) { cerr << e.what() << endl;}
out_of_range
用vector或string的at成员函数根据下标访问元素时,如果下标越界,就会抛出此异常。
vector<int> v(10);try { v.at(100)=100; //抛出out_of_range异常}catch (out_of_range& e) { cerr << e.what() << endl;}
0 0
- 初探C++异常处理学习笔记
- C++&windows异常处理学习笔记
- java学习初探七之异常处理
- 异常处理学习笔记
- Object-C 学习笔记(十一)---动态绑定&异常处理
- 精通C#:Chapter7 结构化异常处理-学习笔记
- C/C++学习笔记八(断言与异常处理)
- 【c++】简单异常处理笔记
- 初探C# 异常处理
- 初探C# 异常处理
- 初探C# 异常处理
- 初探C# 异常处理
- C#异常处理初探
- C#异常处理初探
- c的异常处理学习
- java 异常处理学习笔记
- java学习笔记 异常处理
- Java学习笔记(异常处理)
- Python网络爬虫抓取糗事百科
- Java 8的五大特性,将改变你的代码之路
- HDOJ-1011(树形DP)
- 不忘初心,玉汝于成
- 京东获取订单的接口
- 初探C++异常处理学习笔记
- Linux常用的命令
- DATEDIFF 函数 [日期和时间]
- 计算机网络(一)
- tinyMCE粘贴word/html时去掉文本里的样式
- Android 的媒体路由功能应用与框架解析
- Linux Android 开发环境的搭建 和 第一个Android程序HelloAndroid
- 与上海传智播客的美丽邂逅
- Tomcat 系统架构与设计模式,第 1 部分: 工作原理