C与C++异常处理深度解析

需积分: 3 10 下载量 123 浏览量 更新于2024-08-02 收藏 562KB PDF 举报
"C与C++中的异常处理深入解析,由Robert Schmidt撰写并由无情翻译。本书分为多个部分,详细探讨了异常处理的不同方面,包括C语言和C++中的异常支持,微软对异常处理的扩展,以及标准C++异常处理机制。书中涵盖从基本语法和语义到实战应用,如new和delete操作时的异常处理,模板安全,以及如何在C++异常和Visual C++的结构化异常处理之间协同工作。作者特别强调了异常作为程序错误的指示器,并讨论了异常处理的重要性和策略,旨在帮助读者理解和掌握异常处理的最佳实践。" 异常处理是编程语言中用于处理运行时错误和非正常情况的关键机制。在C语言中,异常处理相对有限,主要依赖于返回值检查和全局错误状态变量。然而,C++引入了更强大的异常处理系统,允许程序在遇到错误时抛出异常,并在适当的地方捕获并处理这些异常,从而提供了一种更优雅和模块化的错误处理方式。 Part 1介绍了标准C库对异常的支持,如errno和setjmp/longjmp等方法,这些方法在C语言中用于处理非致命错误和恢复点。这部分内容对C程序员尤其有价值,因为它解释了如何在没有C++异常机制的情况下处理异常情况。 Part 2专注于微软对C库异常处理的扩展,特别是结构化异常处理(Structured Exception Handling, SEH)。这部分内容讨论了微软特有的异常处理宏和机制,这些在Windows平台上编程时十分常见。 Part 3及后续章节深入到C++的异常处理体系。这里,读者会了解到如何声明和抛掷异常,以及如何使用try、catch和finally块来构造健壮的异常处理代码。此外,这部分还涵盖了在new和delete操作中可能出现的异常,以及placement new和placement delete的使用,这些都是C++内存管理的关键部分。 书中的章节还涉及了异常规格声明(exception specifications),用于指定函数可能抛出的异常类型,以及当异常抛出不符合规格时的行为。异常安全(exception safety)是另一个重点,它涉及到在异常发生时保持数据结构的完整性。模板安全的讨论则涵盖了异常处理在多模板编程中的应用和挑战。 最后,作者提供了关于如何在C++异常和Visual C++的SEH之间进行协调使用的指导,这对于编写跨平台代码的开发者来说至关重要。 这本书全面而深入地探讨了C和C++中的异常处理,旨在帮助程序员编写更健壮、更易于维护的代码,应对运行时可能出现的各种异常情况。无论是C++新手还是经验丰富的开发者,都能从中受益匪浅。