C++中的异常浅析

原创 2016年05月31日 09:07:43

   我们都知道,无论是在C语言中还是C++的编程调试中,我们都会遇到各种各样的错误,那么在遇到这些错误的时候我们要怎么处理它们呢?

这里有一些传统的处理错误的方法:

 ①终止错误

 ②返回错误码

 ③返回合法值,让程序处于某种错误状态,

 ④调用一个预先设置好的处理错误的函数--->(回调函数)

    为了更好地处理这一类问题,在C++中提出了异常,当函数出现一个自己无法处理的错误时,就会抛出异常,让函数的调用者直接或间接的来处理这个问题。

来举一个例子:

例1:

wKioL1cFAMyijsWDAACCC2_kWpg925.png

对于函数div来说,程序没有一种机制来处理当num2为零时的情况,所以我们可以通过抛出异常来解决这个问题

spacer.gif注意:当throw出异常的时候,后面括号里的参数一定要和catch后面括号里的数据类型匹配


例2:下面再来举一个例子wKiom1cE_9vDZ9UXAACiCZpEmLM444.png

spacer.gif

   从上面的代码可以看出,由于一旦抛出异常,就要进行捕获,所以在抛出异常的同时也不可避免的影响了代码的执行流,也就是代码不一定就顺序执行了,因此在抛出异常之前,如果有malloc或new开辟的空间时,一定要在执行流改变之前将其释放,否则就会出现内存泄漏的问题。

通过以上两个例子,我想大家一定能够对异常有一定的了解了吧,下面我来对异常做几点总结:


 ①异常是通过抛出对象引发的,该对象的类型取决了激活哪一类的异常

 ②被选中的异常处理代码是调用链中抛出对象类型相同的最近一个开始的

 ③抛出异常会释放局部存储对象,被抛出的对象也还给了系统,异常对象在catch处理后也还给了系统

Tips:

异常捕获的匹配规则

1.允许非const到const的转换,也就是const可以接受匹配非const

2.允许派生类型到基类的转换(父类的指针或引用可以指向或引用一个子类,将其作为接受的类型)

3.将数组转换为一个指向数组类型的指针,将函数转换为函数指针类型


注意事项

一般不要在析构函数或构造函数中抛出异常



本文出自 “福大馨” 博客,请务必保留此出处http://10800121.blog.51cto.com/10790121/1761052

版权声明:本文为博主原创文章,未经博主允许不得转载。

Visual C++中的异常处理浅析

  • 2010年01月07日 10:35
  • 182KB
  • 下载

C、C++、Java语言中异常处理机制浅析

一、 异常处理 (ExceptionalHandling)概述 1. 异常处理 异常处理又称异常错误处理,它提供了处理程序运行时出现任何意外或异常情况的方法。异常处理通常是防...

c++::浅析c++异常

我觉得看到这篇文章的人肯定有很多疑问,比如:什么是异常?为什么要使用异常?使用异常会对程序代码有什么影响以及不使用又会怎样?等等。那么接下来我一一为你解答,跟着我揭开异常的面纱。 【我们还是先来了解...
  • lalu58
  • lalu58
  • 2016年11月17日 13:48
  • 4848

浅析JAVA异常处理机制.pdf

  • 2010年05月27日 13:58
  • 32KB
  • 下载

浅析C_异常处理机制

  • 2012年07月04日 16:59
  • 62KB
  • 下载

浅析java异常处理机制—中级篇

上一篇我们说到异常处理机制有:捕获异常和抛出异常。下面我们就详细介绍一下。捕获异常(try、catch 和 finally)处理流程: 1)当try没有捕获到异常时:try语句块中的语句逐一被执行,...
  • wj8023
  • wj8023
  • 2015年10月18日 21:35
  • 1106

异常浅析

C++异常是对程序运行过程中发生的异常情况的一种响应,异常提供了将控制权从程序的一部分传递到另一部分的途径。异常处理由3部分组成: 引发异常; 使用处理程序捕获异常; 使用try块。...

黑马程序员——浅析异常

------http://www.itheima.com" target="_blank">Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------...

浅析java之异常

Java异常处理和设计   在程序设计中,进行异常处理是非常关键和重要的一部分。一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度。试想一下,如果一个项目从头到尾没有考虑过...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++中的异常浅析
举报原因:
原因补充:

(最多只允许输入30个字)