iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++ try-catch语法分析与应用
  • 788
分享到

C++ try-catch语法分析与应用

c++java开发语言Poweredby金山文档 2023-10-20 08:10:45 788人浏览 独家记忆
摘要

3 try-catch语法分析 通过前面的学习,我们了解了try-catch语法的基本使用。但是,c++提供的异常处理机制很全面,下面再具体分析。 发生异常的时候,我们可以主动抛出一个异常,所以,使用throw抛出一个异常。异常可以

3 try-catch语法分析

通过前面的学习,我们了解了try-catch语法的基本使用。但是,c++提供的异常处理机制很全面,下面再具体分析。

发生异常的时候,我们可以主动抛出一个异常,所以,使用throw抛出一个异常。异常可以是一个数值,字符,或者表达式。

抛出的异常可以有try-catch语句捕获。try-catch的语法结构如下:

try-catch的结构为

try

{

被检查的语句

}

catch(异常信息类型[变量名])

{

进行异常处理的语句

}

归纳总结如下:

(1) 被检测的异常代码必须放在try块中,捕获不到异常。

(2) try块和catch块作为一个整体出现,catch块数try-catch结构中的一部分,必须紧跟在try块之后,不能单独使用,在二者之间也不能插入其他语句,例如下面的用法不对:

try

{

....

}

cout << "www.mylinux.vip" << endl; //不能插入其他语句

catch(double)

{

....

}

在一个try-catch结构中,可以只有try块而无catch块。那么,就捕获捕获到抛出的异常信息。

(3) try和catch块中必须有用花括号括起来的复合语句,即使花括号内只有一个语句,也不能省略花括号。

(4) 一个try-catch结构中只能有一个try块,但却可以有多个catch块,以便与不同的异常信息匹配,如:

try

{ ... }

catch(double)

{ ... }

catch(int)

{ ... }

catch(char)

{ ... }

(5) catch后面的圆括号中,一般只写异常信息的类型名,如:

catch(double)

catch只检查所捕获异常信息的类型,而不检查它们的值,例如,a, b, c都是 double 类型,虽然它们的值不同,但在throw语句中写throw a, throw b 或 throw c,作用均相同。因此,如果需要检测多个不同的异常信息,应当由throw抛出不同类型的异常信息。

异常信息可以是C++系统预定义的标准类型,也可以说用户自定义的类型(如结构体或类)。如果由throw抛出的信息属于该类型或其子类型,则catch与throw二者匹配,catch捕获该异常信息。

catch还可以有另外一种写法,即除了指定类型名之外,还指定变量名,如:

catch (double e)

此时,如果throw抛出的异常信息是double类型的变量a,则catch在捕获异常信息a的同时,还使得d获得a的值,或者说d得到a的一个拷贝。什么时候需要这样做呢?有时候希望在捕获异常信息的时候,还能利用throw抛出的值,如:

catch (double e)

{

cout << "throw err = " << e << endl;

}

这时会输出e的值就是抛出的异常信息,有时希望在catch块中显示该对象中的某些信息。这时就需要在catch的参数中写出变量名(类对象名)。

(6) 如果在catch子句中没有指定异常信息的类型,而用了删节号“…”,则表示它可以捕捉任何类型的异常信息,如:

catch (...)

{

cout << "catch all err" << endl;

}

它能捕获所有类型的异常信息。

这种catch子句应放在try-catch结构中的最后,相当于“其他”。如果把它作为第一个catch子句,则后面的catch子句都不起作用。

(7) try-catch结构可以与throw出现在同一个函数中,也可以不在同一函数中。当throw抛出异常信息之后,首先中本函数中选择与之匹配的catch,如果在本函数中无try-catch结构或找不到与之匹配的catch,就转到其上一层去处理,如果其上一层也无try-catch结构,或找不到与之匹配的catch,则再转到更上一层的try-catch结构去处理,也就是说,总是转到离开出现异常最近的try-catch结构去处理。当最近的处理不了,再往上传递异常。

(8) 在某些情况下,在throw语句中可以不包括表达式,如:

throw;

表示“我不处理这个异常,请上级处理”。此时,它将把当前在处理的异常信息再次抛出,给其上一层的catch块处理。如:

catch(...)

{

.....

throw; //将已捕获的异常信息再次原样抛出,由上一层的catch处理器处理

}

(9) 如果throw抛出的异常信息找不到与之匹配的catch块,那么,系统就会调用一个系统函数terminate,使程序终止运行。

4 try-catch应用

通过前面的学习,我们掌握了try-catch捕获异常的基本方法。但是,C++提供的异常处理机制很完善,可以考虑多种异常的情况。那么,可以总结如下:

(1) 一个函数可以throw抛出多个异常,try-catch可以使用多个catch捕获不同类型的异常。

程序测试代码如下:

程序运行结果如下:

可以看到,在add()函数中throw多个异常信息。然后,在try后面有2个catch语句块。当执行t.add(11)的时候,就在add()函数中执行 throw 12689;语句,抛出12689消息。

此时,马上结束try中的语句块,不再执行接下来的t.add(16);等语句。直接跳转到catch()语句块中。

此时,抛出的12689消息是一个int类型的数值,所以,提交给catch(int e)捕获,捕获一个int类型的消息。

在进行异常处理后,程序并不会自动终止,继续执行catch子句后面的语句。

来源地址:https://blog.csdn.net/feng19870412/article/details/128977250

--结束END--

本文标题: C++ try-catch语法分析与应用

本文链接: https://www.lsjlt.com/news/432769.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++ try-catch语法分析与应用
    3 try-catch语法分析 通过前面的学习,我们了解了try-catch语法的基本使用。但是,C++提供的异常处理机制很全面,下面再具体分析。 发生异常的时候,我们可以主动抛出一个异常,所以,使用throw抛出一个异常。异常可以...
    99+
    2023-10-20
    c++ java 开发语言 Powered by 金山文档
  • JavaScript中如何使用try..catch..finally语法结构
    这篇文章给大家分享的是有关JavaScript中如何使用try..catch..finally语法结构的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 try..catch..finallyconst&n...
    99+
    2023-06-27
  • JavaScript Try...Catch 语句与其他错误处理机制比较:优缺点分析
    Try...Catch 语句 Try...Catch 语句是最常用的 JavaScript 错误处理机制。它允许程序员将代码放入 try 块中,并在 catch 块中捕获可能发生的错误。以下是一个示例: try { // 在此块中执...
    99+
    2024-02-08
    JavaScript Try...Catch Throw Error finally
  • C#的try语句用法
    C#的try语句用法,需要具体代码示例 C#是一种面向对象的编程语言,其中的try语句是一种用于捕获和处理异常的结构。通过try语句,我们可以编写代码来处理可能发生的异常情况,从而改善...
    99+
    2024-02-22
    c# 语句 try
  • C语言Go语句解析与应用
    C语言Go语句解析与应用 Go语句是C语言中的一种关键字,在程序中起着重要的作用。它可以用于循环、条件语句、函数调用等各种情况,通过正确地使用Go语句,可以使程序的逻辑更加清晰、简洁。...
    99+
    2024-04-02
  • JavaScript中不要在循环内部使用try-catch-finally的示例分析
    这篇文章主要为大家展示了“JavaScript中不要在循环内部使用try-catch-finally的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Ja...
    99+
    2024-04-02
  • C语言指针应用实例分析
    这篇文章主要讲解了“C语言指针应用实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言指针应用实例分析”吧!1、指针是什么指针理解的2个要点:平时口语中说的指针,通常指的是指针变量,...
    99+
    2023-06-30
  • JavaScript try...catch语句与异常处理:终极指南,让你的代码应对一切突发状况
    JavaScript try...catch语句简介 JavaScript try...catch语句是一种错误处理机制,它允许你捕获运行时发生的错误并做出适当的处理。try...catch语句的基本语法如下: try { // 代...
    99+
    2024-02-23
    JavaScript try...catch语句 异常处理 错误捕获 代码健壮性 代码可靠性
  • C语言与Python的对比与分析
    C语言与Python的对比与分析 C语言和Python是两种不同的编程语言,各有优点和适用场景。C语言作为一种底层语言,被广泛应用于系统编程、嵌入式开发等领域,具有高效性和灵活性的特点...
    99+
    2024-04-02
  • C语言结构体应用实例分析
    这篇文章主要介绍“C语言结构体应用实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言结构体应用实例分析”文章能帮助大家解决问题。1、结构体的声明1.1 结构的基础知识结构是一些值的集合,这...
    99+
    2023-06-30
  • C语言简明分析指针与引用的具体用法
    目录1、指针2、引用1、指针 在计算机中,数据是存放在内存单元中的,一般把内存中的一个字节称为一个内存单元。为了更方便地访问这些内存单元,可预先给内存中的所有内存单元进行地址编号,根...
    99+
    2024-04-02
  • JavaScript Try...Catch 语句与调试工具配合使用技巧:快速定位错误源头
    在 JavaScript 中,try...catch 语句是一种用来捕获和处理错误的语法结构。它允许程序员在代码块中显式地处理可能发生的错误,从而使程序能够在出现错误时继续运行,而不会中断或崩溃。 try...catch 语句的语法如下...
    99+
    2024-02-08
    JavaScript try...catch 调试工具 错误处理 错误定位
  • CGO在GO语言流程中调用C++动态SO库时如何获取try和catch异常?
    php小编鱼仔在GO语言开发中,如果想要在CGO调用C++动态SO库时获取try和catch异常,可以采取一些方法。首先,可以在C++代码中使用setjmp和longjmp函数来捕获和...
    99+
    2024-02-11
    go语言
  • C语言循环与分支语句实例分析
    本篇内容主要讲解“C语言循环与分支语句实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言循环与分支语句实例分析”吧!写在开始0表示假,非0表示真。1. 分支语句分支语句也叫做条件选择语...
    99+
    2023-06-30
  • 用C++实现SLR语法分析程序
    目录一、文法二、SLR 分析表三、运行环境四、输入输出设计五、主要数据结构六、核心算法七、测试一、文法 原文法 E->E+T|E-T|T T->T*F|T/F|F F...
    99+
    2024-04-02
  • C语言详细分析讲解struct与union使用方法
    目录一、struct 的小秘密二、结构体与柔性数组三、C语言中的 union四、小结一、struct 的小秘密 C语言中的 struct 可以看作变量的集合 struct ...
    99+
    2024-04-02
  • C语言详细分析宏定义与预处理命令的应用
    目录宏定义与预处理命令预处理命令 - 宏定义定义符号常量定义傻瓜表达式定义代码段预定义的宏函数 VS 宏定义预处理命令 - 条件式编译示例宏定义与预处理命令 预处理阶段:处理宏定义与...
    99+
    2024-04-02
  • C语言 操作符分类解析与使用
    目录操作符的分类算术操作符移位操作符位操作符逻辑操作符逗号表达式表达式求值隐式类型转换算术转换操作符的属性xwg今天就带各位大佬来了解一波C语言的操作符。 操作符的分类 常见的操作符...
    99+
    2024-04-02
  • C#基本语法实例分析
    这篇“C#基本语法实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#基本语法实例分析”文章吧。一.基础语法C#区分大...
    99+
    2023-06-29
  • C语言算法举例分析
    这篇文章主要介绍“C语言算法举例分析”,在日常操作中,相信很多人在C语言算法举例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言算法举例分析”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!最近,我一...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作