1. 首页
  2. 编程语言
  3. C++ 
  4. Learning ROS for Robotics Programming - Second Edition

Learning ROS for Robotics Programming - Second Edition

上传者: 2024-07-23 20:12:27上传 PDF文件 14.32MB 热度 5次

17.1 C语言的出错处理本书在第8章以前使用C标准库的assert( )宏作为出错处理的方法。第8章以后assert( )被按照原先的设计目的使用:在开发过程中,使用它们,完成后用#define NDEBUG使之失效,以便推出产品。为了在运行时检查错误,assert( )被allege( )函数和第8章中引入的宏所取代。通常我们会说:“对于出错处理我们必须面对复杂的代码,但是在这个例子中我们不必由此感到烦恼”。allege( )函数对一些小型程序很方便,对于复杂的大型程序,所编写的出错处理程序也将更加复杂。在通过检查条件我们能确切地知道做什么的情况下,出错处理就变得十分明确和容易了,因为我们通过上下文得到了所有必要的信息。当然,我们只是在这一点上处理错误。这些都是十分普通的错误,不是这一章的主题。

若错误问题发生时在一定的上下文环境中得不到足够的信息,则需要从更大的上下文环境中提取出错处理信息,下面给出了C语言处理这类情况的三种典型方法:

  1. 出错信息可通过函数的返回值获得。如果函数返回值不能用,则可设置一全局错误判断标志(标准C语言中errno( )和perror( )函数支持这一方法)。正如前文提到的,由于对每个函数调用都进行错误检查,这十分繁琐并增加了程序的混乱度。程序设计者可能简单地忽略这些出错信息,因为乏味而迷乱的错误检查必须随着每个函数调用而出现。来自偶然出现异常的函数的返回值可能并不反映什么问题。

有关C语言断言assert的更多信息,可以参考C语言断言assert讲解浅析C语言中assert的用法。若你对带有简单出错处理词法分析的C语言感兴趣,可以点击这里进行深入了解。

下载地址
用户评论