【编程基础】C++异常处理简介

遗憾的是,在实践中人们通常会忽略出错情况,就好像程序处在一个无错误的状态下进行工作的。毫无疑问,导致上述问题的一个原因就是,检测错误是一个乏味的工作并且导致代码的膨胀。比如:函数printf()返回那些被成功地打印出来的字符的个数,但是却很少有人去检测这个返回值。单单代码激增一项就足以令人厌恶,更不用说代码膨胀将不可避免地增加程序阅读的困难了。

C语言中采用的出错处理方法被认为是“紧耦合的”---函数的使用者必须在非常靠近函数调用的地方编写错误处理代码,这样会使其变得笨拙和难以使用。

异常处理(exception handling)是C++的主要特征之一,是考虑问题和处理错误的一种更好的方式。使用异常处理:

1)错误处理代码的编写不再冗长乏味,并且不再与“正常的”代码混合在一起。程序员只需编写希望产生的代码,然后再后面的某个单独的区段里编写处理错误的代码。如果要多次调用同一个函数,则只需在某个地方编写一次错误处理代码。

2)错误不能被忽略。如果一个函数必须向调用者发送一条错误消息,它将“抛出”一个描述错误的对象。如果调用者没有“捕获”并处理它,错误对象将进入上一层封装的动态范围,并且一直继续下去,直到该错误被捕获或者因为程序中没有异常处理器捕获这种类型的异常而导致程序终止。

如何正确使用异常,为什么C++根本无法使用C语言中的异常处理方式?下回我们接着谈

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-06-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯IVWEB团队的专栏

@ ts-check

每次阅读他人代码的时候,我心中都会冒出来两个强烈的愿望:要是 JavaScript是强类型的多好!要是文档能再详细一点就好了!多亏了 TypeScript和 J...

4340
来自专栏程序人生

来来来,咱们元编程入个门

前一篇文章竟然被很多人批「干货太少」 —— 一看你们就没有看过 Rich 他老人家的 Hammock Driven Development(我很久前推荐过滴),...

31810
来自专栏程序人生 阅读快乐

C Primer Plus(第6版)(中文版)

《C Primer Plus(第6版)中文版》详细讲解了C语言的基本概念和编程技巧。

421
来自专栏小詹同学

Python系列之零——从零说起!!!

2017年可谓是人工智能元年,要问哪个行业最火,詹小白不敢确定,但要问哪个编程语言最热门,好吧,詹小白还是不敢说太满。但是!至少从舆论Pytho...

33810
来自专栏Java帮帮-微信公众号-技术文章全总结

Java面试系列1

Java面试系列1 1 静态变量和实例变量的区别? 静态变量也称作类变量,由static修饰,如:static int s; s就是静态变量,它只能通过类来访...

2605
来自专栏WindCoder

5月14日项目小结-获取与增加html节点

需要实现类似聊天的功能,找了半天没找到满意的,只好手动用最笨的方式通过在<ul></ul>中添加<li>相关节点实现。此处代码仅作为实现思路,若是照搬不保证最终...

361
来自专栏tkokof 的技术,小趣及杂念

Sweet Snippet系列 之 元素删除

  平时代码总会遇到一些关于集合的操作,例如添加,排序等等,都可算作稀松平常,但是集合涉及的删除操作却一直有个大坑,我自己便跳进去过好几回,在此简单一记,以自警...

451
来自专栏desperate633

我的javascript学习之路_01之js基础1JavaScript的简介JavaScript的使用JavaScript输出javascript语句JavaScript注释JavaScript变量J

近期开始接触学习extjs框架。该框架是基于JavaScript的。为了更好地理解学习extjs,必然需要先对JavaScript有一个较好的理解。

602
来自专栏Jerry的SAP技术分享

一个查看UI5控件所有公有方法的小技巧

一个很小的tip:比如我想把UI5表格控件里的每列设置成宽度根据显示的内容自适应,需要知道应该调用控件的哪个方法来实现。

1909
来自专栏Play & Scala 技术分享

原 荐 关于 Scala 隐式转换必读的一篇

2322

扫码关注云+社区