关闭

C++异常处理基本思想

标签: 异常处理基本思想
1133人阅读 评论(0) 收藏 举报
分类:

传统错误处理机制
通过函数返回值来处理错误。

异常处理的基本思想

1)C++的异常处理机制使得异常的引发和异常的处理不必在同一个函数中,这样底层的函数可以着重解决具体问题,而不必过多的考虑异常的处理。上层调用者可以再适当的位置设计对不同类型异常的处理。
2)异常是专门针对抽象编程中的一系列错误处理的,C++中不能借助函数机制,因为栈结构的本质是先进后出,依次访问,无法进行跳跃,但错误处理的特征却是遇到错误信息就想要转到若干级之上进行重新尝试,如图

3)异常超脱于函数机制,决定了其对函数的跨越式回跳。
4)异常跨越函数

异常基本语法


1) 若有异常则通过throw操作创建一个异常对象并抛掷。
2) 将可能抛出异常的程序段嵌在try块之中。控制通过正常的顺序执行到达try语句,然后执行try块内的保护段。
3) 如果在保护段执行期间没有引起异常,那么跟在try块后的catch子句就不执行。程序从try块后跟随的最后一个catch子句后面的语句继续执行下去。
4) catch子句按其在try块后出现的顺序被检查。匹配的catch子句将捕获并处理异常(或继续抛掷异常)。
5) 如果匹配的处理器未找到,则运行函数terminate将被自动调用,其缺省功能是调用abort终止程序。
6)处理不了的异常,可以在catch的最后一个分支,使用throw语法,向上扔
7)异常机制与函数机制互不干涉,但捕捉的方式是基于类型匹配。捕捉相当于函数返回类型的匹配,而不是函数参数的匹配,所以捕捉不用考虑一个抛掷中的多种数据类型匹配问题。
catch代码块必须出现在try后,并且在try块后可以出现多个catch代码块,以捕捉各种不同类型的抛掷。
异常机制是基于这样的原理:程序运行实质上是数据实体在做一些操作,因此发生异常现象的地方,一定是某个实体出了差错,该实体所对应的数据类型便作为抛掷和捕捉的依据。
8)异常捕捉严格按照类型匹配
 异常捕捉的类型匹配之苛刻程度可以和模板的类型匹配媲美,它不允许相容类型的隐式转换,比如,抛掷char类型用int型就捕捉不到.例如下列代码不会输出“int exception.”,从而也不会输出“That’s ok.” 因为出现异常后提示退出

int main(){
	try{
		throw ‘H’;
	}
	catch (int){
		cout << "int exception.\n";
	}
	cout << "That's ok.\n";

	return 0;
}

0
0
查看评论

C++中的异常处理(一)

异常就是运行时出现的不正常,例如运行时耗尽了内存或遇到意外的非法输入。异常存在于程序的正常功能之外,并要求程序立即处理。不能不处理异常,异常是足够重要的,使程序不能继续正常执行的事件。如果找不到匹配的catch,程序就调用库函数terminate。   如果不处理异常将会出现上图的...
  • zhy_cheng
  • zhy_cheng
  • 2012-11-23 21:21
  • 12579

【C++】错误处理和异常处理

C++语言本身或标准程序库所抛出的所有异常,都派生自基类exception。这是其他数个标准异常类别的基类,它们共同构成一个类体系: 图一 标准异常阶层体系 这些标准异常类别分为三组: (1)语言本身所支持的异常 此类异常用以支撑某些语言特性。主要包括: ...
  • xiajun07061225
  • xiajun07061225
  • 2012-11-27 18:21
  • 12606

c++异常处理机制示例及讲解

原文链接:http://ticktick.blog.51cto.com/823160/191881 下面的代码直接贴到你的console工程中,可以运行调试看看效果,并分析c++的异常机制。 #include "stdafx.h" #include #includ...
  • u013727453
  • u013727453
  • 2015-04-24 15:30
  • 1937

深入理解C++中的异常处理机制

异常处理 增强错误恢复能力是提高代码健壮性的最有力的途径之一,C语言中采用的错误处理方法被认为是紧耦合的,函数的使用者必须在非常靠近函数调用的地方编写错误处理代码,这样会使得其变得笨拙和难以使用。C++中引入了异常处理机制,这是C++的主要特征之一,是考虑问题和处理错误的一种更好的方式。使用错误处...
  • u013982161
  • u013982161
  • 2016-11-06 12:35
  • 957

C++为什么要引入异常处理机制

1.异常处理的困难在程序设计中,错误时不可避免的。及时有效的发现错误,并作出适当的处理,无论是在软件的开发阶段还是在维护阶段都是至关重要的。错误修复技术是提高代码健壮性的最有效的方法之一。程序员往往忽视错误处理,并不是因为程序员真的认为自己的程序不会出错,而是因为出错处理是在不是一件轻松的事。编写出...
  • K346K346
  • K346K346
  • 2015-11-28 20:57
  • 1720

C++异常处理机制总结

参考文档:《C++编程思想》《C++Primer》《More effective C++》 一、             传统的错误处理机制: 1. ...
  • MulinB
  • MulinB
  • 2007-08-29 10:07
  • 2269

c++异常处理机制

<br />c++异常处理机制<br /><br />C++异常处理机制是一个用来有效地处理运行错误的非常强大且灵活的工具,它提供了更多的弹性、安全性和稳固性,克服了传统方法所带来的问题.<br /><br />异常的抛出和处理主要使用了以...
  • hanchaoman
  • hanchaoman
  • 2010-09-29 14:15
  • 9954

C/C++ 之 异常处理机制核心观点

C++异常处理机制核心观点:     0.  如果使用普通的处理方式:ASSERT, return等已经足够简洁明了,请不要使用异常处理机制。     1.  比C的setjump, longjump优秀。...
  • u013630349
  • u013630349
  • 2016-03-21 21:01
  • 503

C++异常以及错误处理

c 语言中错误的处理, 通常采用返回值的方式或是置位全局变量的方式。 这就存在两个问题。 如果返回值正是我们需要的数据,且返回数据同出错数据容错差不高。全局变量,在多线程中易 引发竞争。而且,当错误发生时,上级函数要出错处理,层层上报,造成过多的出错处理代码, 且传递的效率低下。为此 c+...
  • joshua_love
  • joshua_love
  • 2016-10-13 14:44
  • 1339

C++异常处理基本思想

1)C++的异常处理机制使得异常的引发和异常的处理不必在同一个函数中,这样底层的函数可以着重解决具体问题,而不必过多的考虑异常的处理。上层调用者可以再适当的位置设计对不同类型异常的处理。 2)异常是专门针对抽象编程中的一系列错误处理的,C++中不能借助函数机制,因为栈结构的本质是先进后出,依次访问,...
  • zyq522376829
  • zyq522376829
  • 2015-07-06 16:15
  • 1133
    个人资料
    • 访问:422455次
    • 积分:8195
    • 等级:
    • 排名:第2969名
    • 原创:401篇
    • 转载:30篇
    • 译文:11篇
    • 评论:87条
    博客专栏