C异常处理总结.pdfVIP

  • 3
  • 0
  • 约3.48千字
  • 约 7页
  • 2021-06-28 发布于山东
  • 举报
C 异常处理总结 C++异常总结 C++异常处理机制核心观点: 0.如果使用普通的处理方式:ASSERT,return 等已经 足够简洁明了,请不要使用异常处理机制. 1.比C 的 setjump,longjump 优秀. 2.可以处理任意类型的异常. 你可以人为地抛出任何类型的对象作为异常. throw 100; throw hello; ... 3.需要一定的开销,频繁执行的关键代码段避免使用 C++异常处理机制. 4.其强大的能力表现在: A.把可能出现异常的代码和异常处理代码隔离开,结构更清 晰. B.把内层错误的处理直接转移到适当的外层来处理,化简了 处理 第 1 页 C 异常处理总结 流程.传统的手段是通过一层层返回错误码把错误处理 转移到 上层,上层再转移到上上层,当层数过多时将需要非常多 的判断, 以采取适当的策略. C.局部出现异常时,在执行处理代码之前,会执行堆栈回退, 即为 所有局部对象调用析构函数,保证局部对象行为良好. D.可以在出现异常时保证不产生内存泄漏.通过适当的 try,catch 布局,可以保证 delete pobj;一定被执行. E.在出现异常时,能够获取异常的信息,指出异常原因. 并可以给用户优雅的提示. F.可以在处理块中尝试错误恢复.保证程序几乎不会崩溃. 通过适当处理,即使出现除 0 异常,内存访问违例,也能 让程序不崩溃,继续运行,这种能力在某些情况下及其 重要. 以上ABCDEF 可以使你的程序更稳固,健壮,不过有时让程序崩溃 似乎更 容易找到原因,程序老是不崩溃,如果处理结果有问题,有时很难 第 2 页 C 异常处理总结 查找. 5.并不是只适合于处理灾难性的事件.普通的错误处理也可以 用异常机制 来处理,不过如果将此滥用的话,可能造成程序结构混乱, 因为异常处理机制本质上是程序处理流程的转移,不恰当的, 过度的转移显然 将造成混乱.许多人认为应该只在灾难性的事件上使用异 常处理,以避免异常 处理机制本身带来的开销,你可以认为这句话通常是对的. 6.先让程序更脆弱,再让程序更坚强.首先,它使程序非常脆弱, 稍有差错,马上 执行流程跳转掉,去寻找相应的处理代码,以求适当的解决 方式. 很像一个人身上带着许多药品,防护工具出行,稍有头晕,马 上拿出清凉油; 遇到蚊子立刻拿出电蚊拍灭之. (4月 13 号续) 第 3 页 C 异常处理总结 7.在函数内部申请指针时,如果抛出异常,则余下的代码将 被跳过,将导致资源泄漏,函数返回时局部对象总是被释放,无 论函数是如何退出的。 8.使用灵巧指针(替代指针的对象) 例:void process(istream dataSource) { while(dataSource){ auto_ptrALApa(readALA(dataSource)); pa-process(); } } 9.在构造函数中防止资源泄漏 C++确保删除空指针是安全的。 C++仅仅能删除被安全构造的对象,只有一个对象的构造函 数完全运行完毕,这个对象才能被完全地构造。 C++拒绝为没有完成构造操作的对象调用析构函数是有一

文档评论(0)

1亿VIP精品文档

相关文档