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

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

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

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

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

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

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

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

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CSDN技术头条

C#秒杀Java的五个不可替代的特性,完美的编程语言并不存在

如果我们可以同时拥有 C# 和 Java 世界的最好特性,那会是什么样呢? 完美的编程语言并不存在,我希望我们可以在这一点上达成一致。开发新语言往往是为了克服...

19510
来自专栏高性能服务器开发

写给新手们看的编程修养

什么是好的程序员?是不是懂得很多技术细节?还是懂底层编程?还是编程速度比较快?我觉得都不是。对于一些技术细节来说和底层的技术,只要看帮助,查资料就能找到,对于速...

733
来自专栏owent

Boost.Spirit 初体验

使用代码生成代码是一件十分美妙的事情,于是有了各种代码生成器。但是生成代码,意味着要有对生成规则的分析和处理。 Boost.Spirit 就是这么一个语法分析...

631
来自专栏walterlv - 吕毅的博客

应该抛出什么异常?不应该抛出什么异常?(.NET/C#)

2018-02-04 13:25

442
来自专栏Golang语言社区

第八节 Go语言条件语句

干货来了!!!为了让更多的小伙伴喜欢Golang、加入Golang之中来,Golang语言社区发起人彬哥联合业界大牛共同推出了Go语言基础、进阶、提高课程,目前...

673
来自专栏技术分享

.NET项目开发—浅谈面向对象的纵横向关系、多态入口,单元测试(项目小结)

阅读目录: 1.开篇介绍 2.使用委托消除函数串联调用 2.1.使用委托工厂转换两个独立层面的对象 3.多态入口(面向对象继承体系是可被扩展的) 4.多态的受...

17210
来自专栏aCloudDeveloper

数据对齐详解

Author:bakari           Date:2012.8.26 数据对齐实际上是内存字节的对齐,今天偶然翻开自己以前做的笔记,发现做了好多的题,但...

17810
来自专栏代码世界

计算机基础,Python基础--变量以及简单的循环

一、计算机基础 1.CPU   相当于人体的大脑,用于计算处理数据。 2.内存    用于存储数据,CPU从内存调用数据处理计算,运算速度很快。 PS:问:...

2557
来自专栏ASP.NETCore

.Net Core中使用ref和Span<T>提高程序性能

其实说到ref,很多同学对它已经有所了解,ref是C# 7.0的一个语言特性,它为开发人员提供了返回本地变量引用和值引用的机制。 Span也是建立在ref语法...

625
来自专栏.NET技术

简单工厂模式和策略模式的区别与结合

    简单工厂模式和策略模式是大部分程序员,在学习设计模式时接触得最早,或在工作实践中也是用得相对比较多的两个设计模式。

1195

扫描关注云+社区