详解C++异常处理机制示例介绍
更新时间:2022年08月16日 11:07:03 作者:lhb2998658795
任何东西都可以认为是异常,错误只是异常的一种。本文将带大家了解C++中异常是什么,是如何捕获和处理的等相关知识。文中示例代码简洁易懂,感兴趣的小伙伴可以了解一下
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++异常处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
c语言之char*和unsigned char*的区别及说明
这篇文章主要介绍了c语言之char*和unsigned char*的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-08-08
最新评论