博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言出错处理
阅读量:5246 次
发布时间:2019-06-14

本文共 993 字,大约阅读时间需要 3 分钟。

     上学的时候写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之间。

 

 

转载于:https://www.cnblogs.com/chunqiang/archive/2010/12/09/1901719.html

你可能感兴趣的文章
Vue
查看>>
python-三级菜单和购物车程序
查看>>
条件断点 符号断点
查看>>
水平垂直居中
查看>>
MySQL简介
查看>>
设计模式之桥接模式(Bridge)
查看>>
jquery的$(document).ready()和onload的加载顺序
查看>>
Python Web框架Django (五)
查看>>
.net学习之继承、里氏替换原则LSP、虚方法、多态、抽象类、Equals方法、接口、装箱拆箱、字符串------(转)...
查看>>
【codevs1033】 蚯蚓的游戏问题
查看>>
【程序执行原理】
查看>>
python的多行注释
查看>>
连接Oracle需要jar包和javadoc文档的下载
查看>>
UVA 10976 - Fractions Again?!
查看>>
Dreamweaver cc新版本css单行显示
查看>>
【android】安卓的权限提示及版本相关
查看>>
JavaScript可否多线程? 深入理解JavaScript定时机制
查看>>
IOS基础学习
查看>>
PHP 导出 Excell
查看>>
Java基础教程——网络基础知识
查看>>