个人笔记

Neandert

导航

C语言出错处理

     上学的时候写C代码(真的是写,都是写在纸上的),从没想过如何处理错误。

     今天翻书看到,记录一下。别笑,我能看懂的都是皮毛。

     1.使用assert宏,原型如下:

  #include <assert.h>

      void assert(int expression);

  作用机制,如果 expression 为0,则先向stderr输出错误信息,然后调用abort终止程序运行。

  assert缺点是影响执行速度,可以使用#define NDEBUG 来禁用assert调用。

  
1 #include  <stdio.h>
2 #define NDEBUG
3 #include <assert.h> 

  2.使用宏__LINE__和__FILE__在出错的时候显示出错的行号及文件名。

  3.使用库函数

  (1). errno 程序出错时会把errno设置为一个非0的值。(头文件 errno.h)

  (2). abort函数 可以是程序异常退出。  (头文件 stdlib.h)

  (3). exit函数 与abort类似,但在完成清理后才终止,

    如果有atexit函数登记的任务,会调用atexit的执行函数   (头文件 stdlib.h)

  (4).atexit函数 登记在程序正常终止时要调用的函数  (头文件   stdlib.h)

  (5).strerror和perror函数,用来打印系统错误信息。原型:  

1 /*strerror*/
2 #include <stdio.h>
3 char *strerror(int errnum);
4 
5 /*perror*/
6 #include <stdio.h>
7 #include <errno.h>
8 void perror(const char *s);

  4.使用系统日志函数

  syslog和openlog

  openlog可以用来帮助定位信息在日志文件中的位置。

  syslog用来写入系统日志。syslog可以根据预先定义的级别来写入日志。一般定义在LOG_ERR 和 LOG_NOTICE之间。

 

 

posted on 2010-12-09 23:35  Neandert  阅读(511)  评论(0编辑  收藏  举报