10、深入理解 C++ 与 Java 中的异常处理

深入理解 C++ 与 Java 中的异常处理

1. 异常处理的必要性

在计算机程序运行时,会遇到各种可能导致错误的情况,比如:
- 程序尝试读取一个刚刚被其他程序意外删除的文件。
- 读取文件时遇到错误类型或格式不正确的数据。
- 磁盘已满时尝试写入文件。
- 访问数组越界。
- 网络编程中出现过度的通信延迟或中断。

面对这些情况,程序有两种选择:一是崩溃,这在实际应用中可能会导致灾难性后果;二是捕获错误条件并采取补救措施,比如寻求人工帮助或调用其他程序。

一种简单的保护措施是将可能出错的语句嵌入 if 块中,使其执行具有条件性。例如在 C 语言的文件输入输出操作中,在进行任何 I/O 操作之前,先确保文件指针不为 NULL ,并检查与输入输出流关联的错误和文件结束指示器,以确保 I/O 操作不是因错误而终止。然而,使用 if 语句进行错误(或现代术语中的异常)处理存在一些缺点:
- 程序员完全自主决定是否使用 if 语句,缺乏统一规范。
- 这种处理方式过于局部,当抛出异常时,难以将控制权顺利转移到不同的函数甚至不同的软件模块。

2. C 语言中的 setjmp - longjmp 机制

在 C 语言中,使用 setjmp longjmp 宏(来自 setjmp.h 头文件)可以将控制权转移到不同的函数进行异常处理(在 C 术语中称为错误处理)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值