千家信息网

C++中异常处理的示例分析

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要介绍C++中异常处理的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、背景程序运行时常会碰到一些异常情况,例如:做除法的时候除数为 0;用 new 运算符
千家信息网最后更新 2026年11月04日C++中异常处理的示例分析

这篇文章主要介绍C++中异常处理的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

一、背景

程序运行时常会碰到一些异常情况,例如:

  • 做除法的时候除数为 0;

  • 用 new 运算符动态分配空间时,空间不够导致无法分配;

  • 访问数组元素时,下标越界;打开文件读取时,文件不存在。

这些异常情况,如果不能发现并加以处理,很可能会导致程序崩溃。
所谓"处理",可以是给出错误提示信息,然后让程序沿一条不会出错的路径继续执行;也可能是不得不结束程序,但在结束前做一些必要的工作,如将内存中的数据写入文件、关闭打开的文件、释放动态分配的内存空间等。

二、C++ 异常处理

C++ 引入了异常处理机制。

异常提供了一种转移程序控制权的方式。C++ 异常处理涉及到三个关键字:try、catch、throw。

  • throw: 当问题出现时,程序会抛出一个异常。这是通过使用 throw 关键字来完成的。

  • catch: 在您想要处理问题的地方,通过异常处理程序捕获异常。catch 关键字用于捕获异常。

  • try: try 块中的代码标识将被激活的特定异常。它后面通常跟着一个或多个 catch 块。

举个例子

#include   #include   using namespace std;  int main () {     try         {                 throw 1;                 throw "error";         }         catch (const char* str)         {                 cout << str << endl;         }         catch (int i)         {                 cout << i << endl;         }}

运行结果

也可以自己定义异常类来进行处理:

#include #include using namespace std;//可以自己定义Exceptionclass myexception: public exception{        virtual const char* what() const throw()        {                return "My exception happened";        }}myex;int main () {        try        {                    if(true)    //如果,则抛出异常;                        throw myex;        }        catch (exception& e)        {                cout << e.what() << endl;        }        return 0;}

三、抛出异常与捕获异常

可以使用 throw 语句在代码块中的任何地方抛出异常。throw 语句的操作数可以是任意的表达式,表达式的结果的类型决定了抛出的异常的类型。

以下是尝试除以零时抛出异常的实例:

#include using namespace std;double division(int a, int b){   if( b == 0 )   {      throw "Division by zero condition!";   }   return (a/b);}int main (){   int x = 50;   int y = 0;   double z = 0;   try {     z = division(x, y);     cout << z << endl;   }catch (const char* msg) {     cerr << msg << endl;   }   return 0;}

运行结果

四、catch(...)的作用

  catch(…)能够捕获多种数据类型的异常对象,所以它提供给程序员一种对异常对象更好的控制手段,使开发的软件系统有很好的可靠性。因此一个比较有经验的程序员通常会这样组织编写它的代码模块,如下:

void Func(){  try  {    // 这里的程序代码完成真正复杂的计算工作,这些代码在执行过程中    // 有可能抛出DataType1、DataType2和DataType3类型的异常对象。  }  catch(DataType1& d1)  {  }  catch(DataType2& d2)  {  }  catch(DataType3& d3)  {  }  catch(…)  {  }}

例子

 double division(int a, int b) {         if (b == 0) {                 throw "Division by zero condition!";         }         return (a / b); } int main() {         try         {                 int res = division(10,0);         }         catch (...)         {                 cout << " * ********" << endl;         }     return 0;}

以上是"C++中异常处理的示例分析"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

处理 程序 C++ 代码 文件 类型 关键 关键字 对象 空间 结果 分配 运行 示例 分析 例子 内存 内容 动态 地方 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州万易互联网科技有限公司 互联网科技工作委员会毛军 疫情对互联网科技公司影响 互联网科技社 科技互联网技术 中资互联网科技 奇酷互联网络科技公司 天下捷融互联网科技 衡水科技产业互联网平台 华中科技有哪些互联网大佬 安控科技rtu产品工业互联网 互联网科技商业 威龙国际互联网科技公司 玉溪新华互联网科技好不好 中科明德北京互联网科技 沐思想互联网科技有限公司 西安有哪些互联网高科技企业 玉溪新华互联网科技怎么选 科技互联网专业工作会议发言稿 北京瑞云互联网科技有限公司 浩特互联网科技 互联网科技视频素材 互联网科技公司招聘 随着互联网科技发展 速维有品互联网信息科技(苏州)有限公司 电子科技大学互联网创业大赛 允成互联网科技有限公司融资 山东有哪些互联网科技公司 黑龙江互联网科技公司 优雇互联网科技有限公司
0