在Win32操作系统提供的所有功能中,使用最广泛而又没有公开的恐怕要数结构化异常处理(Structured Exception Handling,SEH) 了。现在Microsoft仍然没有提供这些源代码,它提供的是编译过的目标文件,而Borland则提供了相应的源代码。 结构化异常处理(Structured Exception Handling,SEH)是Win32操作系统中的一个重要特性,用于处理程序执行过程中的异常情况。虽然通常与特定的编译器(如Microsoft的Visual C++或Borland C++)的运行时库相关联,但SEH实际上是操作系统级别的服务。在Win32中,SEH通过关键字`__try`、`__finally`和`__except`提供了一种处理异常的方式,这些关键字由编译器解释并转化为操作系统的原生结构。 SEH的运作方式是,当程序遇到异常(如除零错误、非法指令等)时,CPU的硬件中断机制会触发异常处理流程。操作系统接收到这个异常后,会沿着当前线程的异常处理链(Exception Handler Chain)查找合适的异常处理函数,这个链是由编译器在生成可执行文件时构造的。每个处理函数都有机会处理异常,或者将控制权传递给下一个处理函数。 尽管`__try`、`__finally`和`__except`等语法在C++中常见,但它们并非语言标准的一部分,而是编译器扩展。它们在底层映射到操作系统的结构化异常处理机制,比如在Windows NT 4.0中,这些机制是针对Intel处理器设计的,但也适用于其他处理器平台。 C++的异常处理(catch())与SEH有所不同,但内部实现有相似之处。C++异常处理通常涉及类型检查和对象销毁,而SEH更侧重于错误的检测和恢复,或是终止程序执行。在SEH中,`GetExceptionCode`用于获取异常的特定代码,`EXCEPTION_EXECUTE_HANDLER`则标记了一个处理程序应执行处理代码,而不是继续传递异常。 编写自定义的SEH处理程序可以给程序员提供更大的灵活性,例如在发生异常时进行日志记录、资源清理,甚至是尝试恢复程序的正常执行。然而,由于SEH的底层实现细节通常不公开,对于想要实现编译器级别的SEH支持开发者来说,这是一个挑战。尽管Borland提供了一些源代码,但Microsoft只提供了编译后的目标文件,增加了这一领域的复杂性。 了解SEH的底层工作原理有助于优化程序的错误处理,特别是在处理系统级错误或低级别的资源管理时。在编写系统级或底层代码时,理解SEH可以帮助编写更健壮的程序,尤其是在处理可能导致程序崩溃的异常情况时。因此,深入学习和理解SEH对于开发Win32平台的软件至关重要。
剩余63页未读,继续阅读
- 粉丝: 0
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 技术资料分享TF卡资料很好的技术资料.zip
- 技术资料分享TF介绍很好的技术资料.zip
- 10、安徽省大学生学科和技能竞赛A、B类项目列表(2019年版).xlsx
- 9、教育主管部门公布学科竞赛(2015版)-方喻飞
- C语言-leetcode题解之83-remove-duplicates-from-sorted-list.c
- C语言-leetcode题解之79-word-search.c
- C语言-leetcode题解之78-subsets.c
- C语言-leetcode题解之75-sort-colors.c
- C语言-leetcode题解之74-search-a-2d-matrix.c
- C语言-leetcode题解之73-set-matrix-zeroes.c