C语言异常处理和结构化异常处理有什么区别?
2013-07-08 11:53
274 查看
所谓的“普通”C++异常处理使用了三条附加的c++语句:try,catch和throw。这些语句的作用是,当正在执行的程序出现异常情况时,允许一个程序(异常处理程序)试着找到该程序的一个安全出口。异常处理程序可以捕获任何数据类型上的异常情况,包括C++类。这三条语句的实现是以针对异常处理的ISO WG21/ANSI X3J16 C++标准为基础的,Microsoft C++支持基于这个标准的异常处理。注意,这个标准只适用于C++,而不适用于C。
结构化异常处理是Microsoft c/c++编译程序的一种功能扩充,它的最大好处就是它对C和C++都适用。Microsoft的结构化异常处理使用了两种新的结构:try—except和try-finally。这两种结构既不是ANSI c++标准的子集,也不是它的父集,而是异常处理的另一种实现(Microsoft会继续在这方面努力的)。try—except结构被称为异常处理(exception handling),tryfinally结构被称为终止处理(termination handling)。try—except语句允许应用程序检索发生异常情况时的机器状态,在向用户显示出错信息时,或者在调试程序时,它能带来很大的方便。在程序的正常执行被中断时,try—finally语句使应用程序能确保去执行清理程序。尽管结构化异常处理有它的优点,但它也有缺点——它不是一种ANSI标准,因此,与使用ANSI异常处理的程序相比,使用结构化异常处理的程序的可移植性要差一些。如果你想编写一个真正的C++应用程序,那么你最好使用ANSI异常处理(即使用try,catch和throw语句)。
结构化异常处理是Microsoft c/c++编译程序的一种功能扩充,它的最大好处就是它对C和C++都适用。Microsoft的结构化异常处理使用了两种新的结构:try—except和try-finally。这两种结构既不是ANSI c++标准的子集,也不是它的父集,而是异常处理的另一种实现(Microsoft会继续在这方面努力的)。try—except结构被称为异常处理(exception handling),tryfinally结构被称为终止处理(termination handling)。try—except语句允许应用程序检索发生异常情况时的机器状态,在向用户显示出错信息时,或者在调试程序时,它能带来很大的方便。在程序的正常执行被中断时,try—finally语句使应用程序能确保去执行清理程序。尽管结构化异常处理有它的优点,但它也有缺点——它不是一种ANSI标准,因此,与使用ANSI异常处理的程序相比,使用结构化异常处理的程序的可移植性要差一些。如果你想编写一个真正的C++应用程序,那么你最好使用ANSI异常处理(即使用try,catch和throw语句)。
相关文章推荐
- Java中异常处理机制的简单原理和应用,并说明Error与Exception有什么区别?
- 请描述Java中异常处理机制的简单原理和应用,并说明Error与Exception有什么区别?
- 结构化异常处理和C++的异常处理区别
- 请描述Java中异常处理机制的简单原理和应用,并说明Error与Exception有什么区别?
- C语言异常处理——setjmp & longjmp
- java的运行时异常和普通异常有什么区别(TODO)
- 计算机视觉,计算机图形学和数字图像处理,三者之间的联系和区别是什么?
- java异常处理的throw和throws的区别
- Objective-C语言:异常处理机制
- 异常处理---C语言
- JAVA编程中异常问题处理方式的区别和分析
- Java中的两种异常类型是什么?他们有什么区别?
- C语言中struct和union的区别是什么
- java异常处理机制及两种异常的区别
- 第24章 SEH结构化异常处理_异常处理及软件异常
- C++ 11 国标标准方面的异常处理与微软在Visual Studio 2012的异常处理的区别
- java异常throw 与 throws关键字有什么区别?
- 37、不一样的C++系列--C语言异常处理
- java中如果我老是少捕获什么异常,如何处理?
- 第63课-C语言异常处理