《错误处理》PPT课件(I)

《错误处理》PPT课件(I)

ID:39734914

大小:220.26 KB

页数:27页

时间:2019-07-10

《错误处理》PPT课件(I)_第1页
《错误处理》PPT课件(I)_第2页
《错误处理》PPT课件(I)_第3页
《错误处理》PPT课件(I)_第4页
《错误处理》PPT课件(I)_第5页
资源描述:

《《错误处理》PPT课件(I)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、错误处理目标了解错误检查和错误处理的方法,从而提高编码的质量目录概述错误检查错误处理GOTOGOTOGOTO概述错误的分类不应该发生的错误“应该发生”的错误错误处理的几个方面错误检查发生异常错误时的处理返回错误错误处理的原则输入垃圾,不能输出垃圾错误检查断言检查输入参数检查内部调用函数的返回值错误检查与性能的平衡GOTOGOTOGOTOGOTOBACK错误检查——断言(ASSERT)用于检查“不应该发生的错误”。仅在Debug版本起作用。如果程序在assert处终止了,并不是说含有该assert的函数有错误,而是调用者出了差错,assert可以帮助我们找到发生错误的原因。对于内部使

2、用的函数,通常可以用断言,而对于提供给外部使用的函数,最好使用错误处理。错误检查——断言(ASSERT)一个例子void*memcpy(void*pvTo,constvoid*pvFrom,size_tsize){/*使用断言*/assert((pvTo!=NULL)&&(pvFrom!=NULL));byte*pbTo=(byte*)pvTo;//防止改变pvTo的地址byte*pbFrom=(byte*)pvFrom;//防止改变pvFrom的地址*/while(size-->0)*pbTo++=*pbFrom++;returnpvTo;}错误检查——断言(ASSERT)使用a

3、ssert时需要注意:在编写函数时,要进行反复的考查,并且自问:“我打算做哪些假定?”一旦确定了的假定,就要使用断言对假定进行检查assert不应该产主其他的副作用,因为assert在release版是不执行的Assert((a=b));//a=b在release版不执行,错误BACK错误检查——检查输入参数检查输入的内核对象Handle是否有效,如线程handle、eventhandle、文件handle等if(INVALID_HANDLE==inputHandle){…}检查指针是否为NULLif(NULL==inputPtr){…}检查参数的取值范围是否符合对它的限制,对数组

4、下标和偏移量尤其要检查,因为一个不合法的数组小标和偏移量会导致非法的内存访问If((0

5、

6、(offset>=maxSize){…}If((0<=day)

7、

8、(day>31)){…}错误检查——检查输入参数intnoteL03_FAC_MakeDetail(MarkID_t*pstMarkID,void*pResult){……do{if((NULL==pResult)

9、

10、(NULL==pstMarkID))break;}while(false);……}intnoteL99_GetFileNameAndCateInfo(intindex,……,INNOTE_CateIn

11、fo_t*pstCateInfo){……do{if(index<0

12、

13、index>=INNOTE_DB_FILE_MAX)break;*pstCateInfo=stNoteManageInfo.stCateInfo[index];……}while(false);……}BACK错误检查——检查函数返回值内核对象操作fileHdl=noteL99_FileOpen(fName,O_BINARY

14、O_RDONLY,S_OREAD);if(fileHdl<0)break;内存操作buffHdl=noteL99_AssignMemory(buffSize);if(buffHdl<0)brea

15、k;pBuff=noteL99_LockMemory(buffHdl);if(NULL==pBuff)break;一般函数的返回值对所有函数的返回值进行判断,除非该函数没有返回值BACK错误检查与性能的平衡过多的错误检查会影响性能为了减少调用者的负担,如果函数任何情况下都不会出错,就不要有返回值要避免重复的,无效的错误检查对于“不应该发生”的错误,使用断言在开发阶段发现错误,发布以后就不进行错误检查了BACK错误处理常用错误处理的方式返回错误信息的几种方式错误处理的实践GOTOGOTOGOTO常用错误处理的方式把错误校正,并输出正确的结果函数的容错性很好,但是会隐藏调用者的错误大部

16、分情况下,因为错误是不能校正的,所以不能这样处理什么都不输出,返回成功信息函数的容错性较好,但是会给调用者带来麻烦不建议使用什么也不输出,“返回”错误信息建议使用结束程序的运行除非发生了极其严重的错误,否则不要这样做返回错误信息的方式通过函数返回值返回错误代码更新某个公共的状态通过event、message等发出错误的通知输出打印信息ErrorLog上面几种的混合注意:函数采用什么处理方式要在系统范围内或模块范围内统一规定,开发者在设计和编写函数的时候一定要弄清楚系统

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。