1.C++异常处理的套路
C++异常处理机制之抛出异常关键字:throw
throw关键字的使用:
在哪可能出现异常就在哪里使用throw关键字抛出异常。 这个异常可以使用一个常量,字符串,或类对象,都可以来抛出。 throw + 常量、字符串、数对象 :用表示抛出一个异常。 throw抛出的异常将层层向外抛出,至少有try....catch...语句来捕获这个异常并处理这个异常。 如果最外层的主函数也不进行处理,那么主程序将自动停止。
使用try{ .... } catch(exp ){..} 捕获并处理异常:
- try
- {
- //有可能出现的异常的代码放在try语句块中。
- //在try语句块中就可以捕获这个异常。
- //如果try语句块中的代码出现异常,即自动跳转到catch语句块进行异常处理。
- }catch(被捕获的异常)
- {
- //catch的语句块里是用来处理异常。
- }
代码实例:
- #include <iostream>
- using namespace std;
- int my_add(int a,int b)
- {
- if(b==0){
- throw -1;
- }
- return a/b;
- }
- int add(int a,int b)
- {
- return a+b+my_add(a,b);
- }
- int main()
- {
- try {
- add(10,0);
- } catch (int num) {
- if(num==-1){
- cout<<"被除数不能为0"<<endl;
- }
- }
- return 0;
- }
结果图:

2.C++标准异常库中常用的几个异常处理类

2.1异常类的例子
- #include <iostream>
- using namespace std;
- int my_add(int a,int b)
- {
- if(b==0){
- out_of_range err("被除数不能为0");
- throw err;
- }
- return a/b;
- }
- int add(int a,int b)
- {
- return a+b+my_add(a,b);
- }
- int main()
- {
- try {
- add(10,0);
- } catch (out_of_range & err) {
-
- cout<<err.what()<<endl;
- }
- return 0;
- }
2.2封装一个自定义异常类
- #include <iostream>
- using namespace std;
- class Err
- {
- string err;
- public:
- Err(string err)
- {
- this->err=err;
- }
- string what()
- {
- cout<<"被除数不能为0"<<endl;
- }
- };
- int my_add(int a,int b)
- {
- if(b==0){
- Err err("被除数不能为0");
- throw err;
- }
- return a/b;
- }
- int add(int a,int b)
- {
- return a+b+my_add(a,b);
- }
- int main()
- {
- try {
- add(10,0);
- } catch (Err & err) {
-
- cout<<err.what()<<endl;
- }
- return 0;
- }
到此这篇关于详解C++异常处理机制示例介绍的文章就介绍到这了,更多相关C++异常处理内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!