经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C++ » 查看文章
详解C++异常处理机制示例介绍
来源:jb51  时间:2022/8/16 13:27:02  对本文有异议

1.C++异常处理的套路

C++异常处理机制之抛出异常关键字:throw

throw关键字的使用:

在哪可能出现异常就在哪里使用throw关键字抛出异常。 这个异常可以使用一个常量,字符串,或类对象,都可以来抛出。 throw + 常量、字符串、数对象 :用表示抛出一个异常。 throw抛出的异常将层层向外抛出,至少有try....catch...语句来捕获这个异常并处理这个异常。 如果最外层的主函数也不进行处理,那么主程序将自动停止。

使用try{ .... } catch(exp ){..} 捕获并处理异常:

  1. try
  2. {
  3. //有可能出现的异常的代码放在try语句块中。
  4. //在try语句块中就可以捕获这个异常。
  5. //如果try语句块中的代码出现异常,即自动跳转到catch语句块进行异常处理。
  6. }catch(被捕获的异常)
  7. {
  8. //catch的语句块里是用来处理异常。
  9. }

代码实例:

  1. #include <iostream>
  2. using namespace std;
  3. int my_add(int a,int b)
  4. {
  5. if(b==0){
  6. throw -1;
  7. }
  8. return a/b;
  9. }
  10. int add(int a,int b)
  11. {
  12. return a+b+my_add(a,b);
  13. }
  14. int main()
  15. {
  16. try {
  17. add(10,0);
  18. } catch (int num) {
  19. if(num==-1){
  20. cout<<"被除数不能为0"<<endl;
  21. }
  22. }
  23. return 0;
  24. }

结果图:

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

2.1异常类的例子

  1. #include <iostream>
  2. using namespace std;
  3. int my_add(int a,int b)
  4. {
  5. if(b==0){
  6. out_of_range err("被除数不能为0");
  7. throw err;
  8. }
  9. return a/b;
  10. }
  11. int add(int a,int b)
  12. {
  13. return a+b+my_add(a,b);
  14. }
  15. int main()
  16. {
  17. try {
  18. add(10,0);
  19. } catch (out_of_range & err) {
  20. cout<<err.what()<<endl;
  21. }
  22. return 0;
  23. }

2.2封装一个自定义异常类

  1. #include <iostream>
  2. using namespace std;
  3. class Err
  4. {
  5. string err;
  6. public:
  7. Err(string err)
  8. {
  9. this->err=err;
  10. }
  11. string what()
  12. {
  13. cout<<"被除数不能为0"<<endl;
  14. }
  15. };
  16. int my_add(int a,int b)
  17. {
  18. if(b==0){
  19. Err err("被除数不能为0");
  20. throw err;
  21. }
  22. return a/b;
  23. }
  24. int add(int a,int b)
  25. {
  26. return a+b+my_add(a,b);
  27. }
  28. int main()
  29. {
  30. try {
  31. add(10,0);
  32. } catch (Err & err) {
  33. cout<<err.what()<<endl;
  34. }
  35. return 0;
  36. }

到此这篇关于详解C++异常处理机制示例介绍的文章就介绍到这了,更多相关C++异常处理内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号