`
aigo
  • 浏览: 2705372 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

C语言异常处理和结构化异常处理有什么区别?

 
阅读更多

原文:http://jsj.nhjsj.net/nh12/Cstudy/ShowArticle.asp?ArticleID=42

总的来说,结构化异常处理和异常处理之间的区别就是Microsoft对异常处理程序在实现上的不同。所谓的“普通”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语句)。

分享到:
评论

相关推荐

    可嵌套的C语言异常处理机制

    1. **初始化**:在开始异常处理之前,需要初始化异常处理机制,比如创建堆栈数据结构。 2. **开始try块**:在可能抛出异常的代码前,调用setjmp并将返回值存储在安全的地方,这相当于进入一个try块。 3. **抛出...

    C语言的异常处理和C++的异常处理有何区别?

    C语言的异常处理主要是通过操作系统提供的结构化异常处理(Structured Exception Handling,简称SEH)来实现的。在Windows操作系统中,C语言可以使用`__try`、`__except`和`__finally`这三个关键字来构建异常处理块...

    c/vc++/MFC异常处理/结构化异常处理 浅析

    结构化异常处理(Structured Exception Handling,SEH)是Windows平台特有的异常处理机制,它与C++的异常处理机制不同。SEH使用__try、__except和__finally关键字,能够捕获和处理系统级异常,如硬件故障、访问违规...

    Linux下实现Windows的结构化异常处理.pdf

    在Linux操作系统中,Windows的结构化异常处理(SEH,Structure Exception Handling)是一种强大的错误处理机制,允许程序员注册异常处理函数,以便在程序发生异常时能够优雅地处理和恢复。然而,Linux内核本身并不...

    异常处理 C语言程序设计教程C输入输出流PPT课件.pptx

    C++ 提供了异常处理解决方案,引入了 3 个关键字 try、throw 和 catch,利用这种结构化的形式来描述异常处理过程。 try、throw 和 catch try 负责监视可能出现异常的程序段,当程序运行中出现异常时,它会检测出这...

    什么是C语言?什么是VB语言?什么是VF语言?什么是JAVA语言?什么是C语言?.docx

    它是结构化编程的先驱,以其简洁、高效和强大的低级内存管理能力而闻名。C语言被广泛用于操作系统、嵌入式系统、游戏开发、设备驱动程序以及各种复杂软件的开发。它提供了丰富的数据类型、控制结构和函数,允许...

    什么是C语言?什么是VB语言?什么是VF语言?什么是JAVA语言?什么是C语言? (2).docx

    它支持结构化编程,提供了预处理符、类型系统、指针等特性,使得程序设计更加灵活。C语言被广泛应用于操作系统、嵌入式系统、设备驱动、游戏开发等领域,也是许多其他高级语言如Java、C++的基础。 【VB语言】 VB...

    数字信号处理c语言程序集.rar_C++_C语言信号_信号处理C语言_数字信号处理C

    7. **错误处理和调试**:C语言的直接性和简洁性使得错误排查变得相对直接,而C++的异常处理机制则提供了一种更为结构化的错误处理方式。 通过《数字信号处理C语言程序集》,学习者不仅可以掌握理论知识,还能通过...

    C语言程序设计异常处理PPT课件.pptx

    总结来说,C语言中的异常处理虽然不如其他支持异常处理的语言那样直接,但通过一些技巧,可以实现类似的功能,帮助编写更健壮的程序,提高错误处理的效率和可靠性。异常处理不仅有助于错误的定位,还能保持程序结构...

    C语言程序设计异常处理PPT学习教案.pptx

    《C语言程序设计异常处理》PPT学习教案主要讲解了C语言中异常处理的基本思想、实现机制以及相关实践。在C语言中,异常处理是一种处理程序运行时错误的方法,它允许程序员优雅地处理不可预见的问题,而不是让程序崩溃...

    学生成绩管理系统c语言简单版数据结构课程设计

    【标题】"学生成绩管理系统c语言简单版数据结构课程设计"主要涵盖了两个核心主题:C语言编程和数据结构的应用。在C语言中实现一个学生成绩管理系统,可以帮助初学者理解如何利用编程语言来处理实际问题,特别是涉及...

    文本编辑器(c语言+数据结构)

    在这个项目中,“文本编辑器(c语言+数据结构)”是一个结合了C语言编程与数据结构的实践课题。这个课题旨在提升学生对C语言的理解,并通过实际操作来深入学习数据结构的应用。 首先,C语言是低级编程语言,它允许...

    vc异常处理文章两篇

    然而,它还添加了一些特定于平台的功能,比如SEH(结构化异常处理)。SEH是一种Windows操作系统级别的异常处理机制,适用于所有Windows程序,不论它们是否使用C++。在SEH中,异常由__try、__except和__finally关键字...

    学生成绩管理系统(C语言,处理文件)

    学生成绩管理系统是基于C语言实现的一个典型应用,它涉及到文件操作、数据排序以及系统设计等多方面的知识点...通过这个项目的学习和实践,开发者不仅能提升C语言的编程技能,还能对文件处理和数据处理有更深入的理解。

    jieli_C语言编写结构力学程序_

    综上所述,编写C语言结构力学程序是一项综合性的任务,它要求开发者具备扎实的C语言基础、结构力学知识以及数值计算和图形处理能力。通过这样的程序,工程师可以快速准确地评估结构性能,从而在设计阶段就避免潜在的...

    C语言与C++语言有什么区别?PDF

    C语言与C++语言有什么区别? C是一个结构化语言,如谭老爷子所说:它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制),而对于C++...

    C语言可视化计算器

    注意处理除零错误和其他可能的异常情况。 6. **显示结果**:计算完成后,将结果显示在文本框中。这通常涉及到GTK+的文本模型和视图组件,用于更新显示的文本。 7. **程序运行与调试**:编译并运行程序,测试不同...

    C语言和C++的区别【完整版】

    首先,C语言是一个结构化语言,其重点在于算法和数据结构,而C++是一个基于C语言的面向对象语言,首要考虑的是如何构造一个对象模型,使其契合与之对应的问题域。 C语言和C++的最大区别在于它们的用于解决问题的...

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

    结构化异常处理(SEH)是Visual C++对C和C++异常处理的扩展。SEH使用`__try`、`__except`和`__finally`关键字,它可以捕获系统级的异常,如内存溢出或除零错误等。SEH的优势在于它可以处理C语言级别的异常,而不仅仅是...

    成绩管理系统C语言—数据结构课设

    在C语言中实现这样的系统,我们需要利用数据结构来存储和处理大量成绩数据。C语言是一种底层、高效的语言,适合进行这样的系统开发,尤其是在资源有限的环境中。在这个项目中,我们可能会遇到以下核心知识点: 1. *...

Global site tag (gtag.js) - Google Analytics