当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2012-03-13 17:21:00  来源:本站整理

C++非常数值的利用[VC/C++编程]

赞助商链接



  本文“C++非常数值的利用[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

  当抛出C++非常时,函数调用链将此后回溯搜索,探求可以处理抛出这类非常的处理器.若没找到,进程完毕.假如找到,调用栈将被释放,全部的自动(部分)变量也将释放,然后栈将被整理为非常处理器的上下文相关设备.因此非常开销由一个非常处理器目录和一个活动的自动变量表(它需求额外的代码、内存,并且不管非常能否抛出,城市运行),还得加上函数调用链的搜索、自动变量的解析和栈的调整(它只在抛出非常的时刻需求履行)构成.

  步骤/办法

  抛出机会

  抛出非常的机会应当是一个函数发现一个错误,假如没有一些特别的操作,该错误能禁止程序正常的运行,而这种操作它自己不能完成,或是在函数不大概有返回值的时刻.

利用非常处理更简单,更坚固,更有效,可以成立更结实的代码.但是,应当只在不测的情形下利用非常处理.假如你认为一个指针应当是空值,这种条件下就直接在代码中查抄这个值,而不要利用非常.

  什么时刻捕捉

  关于这个问题,有一些大概的尺度:

  .当函数知道若何处理这个非常时.

  .当这个函数可以公道地处理这个非常而高级的函数不知道若何处理时.

  .当抛出非常大概使进程崩溃时.

  .当函数可以持续履行它的任务时.

  .当需求整理分配好的资源时.

非常处理的一个缺陷是它大概招致资源的泄露.因此,避免资源泄露更应当是保持程序非常安全的一部份.栈释放时会自动整理部分变量,但不包含动态分配的变量.可以利用智能(smart)指针来保护你的代码在存在非常的情形下不会产生资源泄露.

  怎样捕捉

.非MFC的C++非常应当通过引用来捕捉.利用引用捕捉非常不需求删除非常对象(因为利用引用捕捉的非常会在栈中传送),并且它保存了多态性(因此你捕捉的非常对象恰是你抛出的非常对象).
.MFC非常应当通过指针来捕捉.利用指针捕捉非常需求你删除对象.因为它们普通从堆中分配,当你处理完非常之后,需求调用Delete成员函数来删除.你不可以利用省略捕捉处理器捕捉MFC非常,这会招致一个内存泄露.必须利用Delete成员函数删除MFC非常,而不用delete,因为一些 MFC非常为静态对象成立.
在释放栈的历程中抛出非常会招致进程的终止.释放栈触及到调用析构函数,非常可以禁止调用delete操作符,这样会有资源泄露,因此非常最好不要从析构函数中抛出.假如非要在析构函数里抛出非常,必须妥善处理,避免资源泄露.

  以上是“C++非常数值的利用[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: 与您的QQ/BBS好友分享!
  • 好的评价 如果您觉得此文章好,就请您
      0%(0)
  • 差的评价 如果您觉得此文章差,就请您
      0%(0)

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .