C语言/C++编程学习异常处理:如何处理c++中的异常

C语言是面向过程的,而C++是面向对象的

C和C++的区别:

C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。

C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。

C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。

异常是指不符合规则或泛化的实例。它是程序执行过程中可能出现的问题的一个指示。异常处理的机制提供了一种方法,将控制和信息从执行的点处转移到处理程序例程的位置。处理程序例程为程序员提供了一个机会窗口,使其能够以适当的方式屈服于优雅的终止或处理它。本文介绍了c++中异常处理机制的实现方法。

小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

概述

程序从执行某个任务开始。如果执行特定任务的代码运行顺利,则执行下一个任务,直到程序完成。现在,如果在执行过程中出现任何错误,代码就会回到错误处理例程中。错误处理逻辑与程序逻辑混杂在一起。尽管这种混合形式很好,但它使代码难以读取、维护和调试,即使对于中等规模的程序也是如此。

注意,在C中提供错误处理机制非常原始。语言本身并没有直接的支持。因此,我们在这里所做的是访问函数返回值的低级形式。按照惯例,如果一个函数返回一个负值或NULL,则表示一个错误。有时,在函数调用期间,一个名为errno的全局变量被设置为一个错误指示器。头文件的错误。h定义了许多这样的错误代码。

对错误处理使用异常会带来清晰性,并使代码更简单,可以将异常例程与程序逻辑分离。我们可以单独处理。这带来了巨大的灵活性;除此之外,我们可以决定处理我们选择的异常,将它们分组到相关的类型中,或者完全忽略它们。

在c++中应用异常处理

在try中包含了c++异常。catch块。try块包含异常可能发生的代码。它由关键字尝试定义,然后是大括号。如果发生异常,则捕获处理程序处理该异常并处理该异常。catch部分也是一个关键字,其次是大括号。每个try块都附带至少一个立即跟踪它的捕获处理程序。可能有多个捕获处理程序与一个try块关联。在这种情况下,当发生异常时,适当的catch处理程序将执行与所发生的异常类型匹配的类型。匹配是根据抛出的异常或其继承的基类进行的。

下面是一个说明基本思想的例子:

异常被设计为只处理同步的错误,如访问数组的索引、除法、算术溢出、内存分配失败等等。异步异常,如键盘和鼠标中断、网络消息接收、I / O完成等,无法处理,因为这些事件是并行发生的,独立于程序控制流。

一个异常Re-thrown

程序可以决定部分地处理异常或根本不处理它。在这种情况下,它可以将责任委托给另一个处理程序。

小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

在main的try块中调用函数func1。函数func1也包含一个try…catch块。throw语句抛出一个标准库类异常的实例,称为异常。catch处理程序(func1)捕获这个异常并再次抛出它,然后被main中定义的catch块捕获。main中的catch块与异常无关,并终止程序。

异常规范

我们可以为一个列举异常列表的函数创建一个抛出列表。

这个函数只能抛出抛出的异常。如果抛出列表中没有指定异常,则异常处理机制将调用意外函数并终止程序。然而,如果我们不提供一个抛出列表,它会自动调用意想不到的函数。(意外函数的行为可以使用set_unexpected函数进行自定义。有关这方面的更多信息,请参阅c++标准文档。

小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

大多数现代编程语言都有作为其特性之一的异常处理能力。一些语言,比如Java,从一开始就把它牢记于心。由于这个原因,使用异常处理机制非常常见。另一方面,c++是C的重构;异常处理是后面的一个附加项。而且,这种功能必须以这样的方式合并,以不影响已经存在的绝大多数代码,同时利用该特性的好处。因此,异常处理的设计决策在将其纳入实际实现之前有几个方面需要考虑。Andrew Koenig和Bjarne Stroustrup对c++的文章异常处理奠定了基础,并对其设计原则提供了重要的见解。

服务器开发工程师、人工智能、云计算工程师、信息安全(黑客反黑客)、大数据 、数据平台、嵌入式工程师、流媒体服务器、数据控解、图像处理、音频视频开发工程师、游戏服务器、分布式系统、游戏辅助等

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容