异常的抛出基本问题
2013-04-20 15:25
155 查看
1.使用throw exception object ;语句进行异常的抛出,异常对象可以是内置数据类型,也可以是自定义数据类型或者标准库中的异常数据类型;
2.
3.catch匹配次序是一次配中,随后则不再匹配。所以,对于一个派生类对象,catch字句的放置顺序就要留意了,应该将catch派生类异常对象的语句放置在catch基类异常对象语句的前面。
4.可以使用throw;语句二次抛出异常。意思是说,一个catch捕获了异常后,它对这个异常做了预处理后发现不能自己完整的处理这个异常,那么可以使用throw;语句将这个对象抛出,以便其他catch语句捕获处理。
5.如果异常没有catch语句处理,那么程序将发生错误,会调用terminate函数终止程序的运行。如下例所示:
2.
3.catch匹配次序是一次配中,随后则不再匹配。所以,对于一个派生类对象,catch字句的放置顺序就要留意了,应该将catch派生类异常对象的语句放置在catch基类异常对象语句的前面。
4.可以使用throw;语句二次抛出异常。意思是说,一个catch捕获了异常后,它对这个异常做了预处理后发现不能自己完整的处理这个异常,那么可以使用throw;语句将这个对象抛出,以便其他catch语句捕获处理。
5.如果异常没有catch语句处理,那么程序将发生错误,会调用terminate函数终止程序的运行。如下例所示:
#include <iostream> using namespace std; class MyException: public exception{ public: MyException(const char *e):exception(e){} }; void main() { try{ int a = 10; cin >> a; try{ if(a < 9) throw MyException("huzunhua");//第一次抛出异常,这里抛出的是一个异常的对象,用于具体化catch的形参 }catch(MyException &e){//catch捕获异常 cout << e.what() << "try again"; throw;//二次抛出异常 } }catch(...){}//如果去掉这里的catch捕获,就会出现运行终止的现象 }
相关文章推荐
- C++ 异常 与 ”为什么析构函数不能抛出异常“ 问题
- 抛出异常的技术小问题
- Java中关于子类覆盖父类的抛出异常问题
- C# 异常抛出写法不同引发的问题
- 解决python3捕获cx_oracle抛出的异常错误问题
- 记录关于抛出异常的小问题
- C++ 异常 与 ”为什么析构函数不能抛出异常“ 问题
- 一个问题:关于finally中return吞掉catch块中抛出的异常
- tomcat 服务器抛出socket异常“文件打开太多”的问题
- C++ 异常 与 ”为什么析构函数不能抛出异常“ 问题
- 关于对Map、List等集合操作抛出ConcurrentModificationException 异常问题
- 构造函数、析构函数抛出异常的问题
- ListView使用遇到的问题:1. ItemView使用merge标签减少嵌套 2. getView中抛出类转换异常
- 关于在Spark集群中读取本地文件抛出找不到文件异常的问题
- 构造函数、析构函数抛出异常的问题
- 类装入问题解密(二)-基本的类装入异常
- 类装入问题解密,第 2 部分: 基本的类装入异常
- 使用七牛上传文件抛出异常问题
- android蓝牙连接createRfcommSocketToServiceRecord方法抛出异常问题
- 关于在Spark集群中读取本地文件抛出找不到文件异常的问题