说说大家的C/C++错误管理

谭海燕 2011-03-26 04:11:42
加精
项目大了,需要对很多表达式的结果进行错误管理。

也就是所说的返回值的判断。

最近拿到一个关于C/C++错误管理的培训课题。

大家都讲讲自己在C/C++项目中错误管理的技巧:

1.如何定义错误代码或者是error 号?
一般用宏定义统一定义error号,遇到不同模块,以及防止自己定义的error错误号和其他人相同,
如何处理这些冲突?


2.哪些表达式或者函数返回值需要判断?

说道这一点,我曾经看过一段代码,该代码对几乎所有的表达式或者函数的返回值或者结果都进行了判断,
俨然变成了一个出错检查的代码。


3。大家都有自己的专门的错误管理模块来专门处理错误状态以及提示吗?


4.精准的定位出错误的出处(例如可以迅速的定位是哪一行哪一个函数出错)。





希望各位给出宝贵的意见以及各位在项目中关于错误定义以及处理的经验。

...全文
4138 206 打赏 收藏 转发到动态 举报
写回复
用AI写文章
206 条回复
切换为时间正序
请发表友善的回复…
发表回复
天上游的鱼 2011-04-03
  • 打赏
  • 举报
回复
1.如何定义错误代码或者是error 号?
2.哪些表达式或者函数返回值需要判断?
3.大家都有自己的专门的错误管理模块来专门处理错误状态以及提示吗?
4.精准的定位出错误的出处(例如可以迅速的定位是哪一行哪一个函数出错)。

1和4就不说了
2:如果调用者(所在函数)可确保函数不会返回错误,或返回错误也无所谓时,可以不做检查
3:个人觉得没太大必要,除非是复杂的C++程序,可能有必要建立一些全局的异常处理类
zgh8661 2011-04-03
  • 打赏
  • 举报
回复
讲的非常详细·
ye0915715 2011-04-03
  • 打赏
  • 举报
回复
一般写代码时使用assert,运行时使用Purify或BoundsChecker检查。
对于字符串处理以及文件处理函数时会进行返回值检查,其他就很少了。
chuntian812340989 2011-04-02
  • 打赏
  • 举报
回复
很好,受教了
vyxcc 2011-04-02
  • 打赏
  • 举报
回复
一窍不通-_-b
wesweeky 2011-04-02
  • 打赏
  • 举报
回复
18楼建议很好啊
nilite 2011-04-02
  • 打赏
  • 举报
回复
这个话题讨论开来,可以写一本书了。

规则1、系统调用是必须要检查错误的,一般分为可处理异常(比如信号中断),资源异常(比如内存暂时不够),硬件异常(比如文件系统损坏),分门别类对这些异常进行处理。有些异常是软件无法处理的,比如硬件异常,那么只能构建相应的日志系统来记录。

规则2、如果是参数错误,比如检查传入的函数参数不合法,那么一般都是放弃处理或者将非法参数强制转换成默认的合法参数,并告知调用者。

规则3、处于底层,被反复调用的函数,需要高效运行的,一般不做参数检查,在函数头里写清楚注意事项。
fengsha001116 2011-04-01
  • 打赏
  • 举报
回复
我遇到的错误一般是没有该文件#include"stdafx.h"
说没有分号,但是我明明有加分号
xcf007 2011-04-01
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 josiahliang 的回复:]

谁愿意学些韩语,本人免费教,嘻嘻。只要大家教我C++,因为本人非常想学好C++,但是新手
[/Quote]

学外语不去搞翻译,跑这来了?
yywd4 2011-04-01
  • 打赏
  • 举报
回复
上网搜搜看。
danywi 2011-04-01
  • 打赏
  • 举报
回复
新手来看经验~
huangbaohong 2011-04-01
  • 打赏
  • 举报
回复
最好用百度的,呵呵
blackvii 2011-03-31
  • 打赏
  • 举报
回复
我也想知道,帮顶!
wocaniyan 2011-03-31
  • 打赏
  • 举报
回复
搬个板凳围观
ping_li422 2011-03-31
  • 打赏
  • 举报
回复
太多,应接不暇。
sac684134 2011-03-31
  • 打赏
  • 举报
回复
这因该自己找吧 , 不过有着也不错啊
ceerqingting2011 2011-03-31
  • 打赏
  • 举报
回复
多讲一些经验 给我们新手啊.
zhm_joy 2011-03-31
  • 打赏
  • 举报
回复
1、一般就看它的作用范围,如果在多个模块中都是用到,可以考虑提取出来放到单独的文件中去,如果只在一个模块中使用到,那在局部添加就可以了。
2、一般用含有错误描述意义的字符,通过宏定义描述即可,直观。
3、调试时,可以通过判断函数的返回值、trace、assert、断点等方式跟踪,甚至可以通过AfxMessageBox输出消息框跟踪(此方法用的溜了也是个很不错的方法哦)。

zaiguo 2011-03-31
  • 打赏
  • 举报
回复
1 统一在一个文件,各模块分段定义错误码.
2 不可修复的错误,用断言编程,出现问题,提前退出。
3 又日志打出出错的位置。
ycg5418 2011-03-30
  • 打赏
  • 举报
回复
什么都要看看
加载更多回复(79)

23,114

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧