6.1 程序也会出错

    当今很多语言都支持异常处理这种机制,如 Java、C++、Python、Ruby 等语言。但是 C 语言是不支持这种机制的。因此,以 C 语言入门学习程序设计的人不少都对为何需要异常处理这个问题认识模糊。本章会说明异常处理产生的目的、它是如何发展的,以及异常处理中仍然尚存的问题。

    程序也会出错,比如写入文件时,如果磁盘空间不足写入操作就会失败。再如,用煤气灶烧开水时,如果火被风吹灭,煤气将充满房屋。如果煤气泄漏检测仪没有检测到这一险情并报警的话,后果将不堪设想,或将酿成煤气爆炸这样的大灾难。1

    1当然,运气好的话可能会闻到煤气气味而不至于酿成大祸,但这毕竟是靠运气。现在城市供应的煤气中通常会特意加入硫化氢等有恶臭味的添加物,就是为了让大家能尽早发现煤气泄漏,尽量减少对运气的依赖,从而构建起双重安全保障。

    程序的出错也一样。写入文件失败时,如果没有任何警告,用户就难以察觉。用户可能会误以为这些非常重要的数据已经成功写入磁盘中,从而把原始数据删除。为了能使用户在灾难发生前有所警觉,程序设计语言需要具备和煤气泄漏检测仪一样的错误传达机制。