- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * * * * * * * * * * * Design by Contract — Practice 郭东伟 Language Support in C/C++ 和其他语言相比,C/C++特别注重效率,因此不受任何程序员控制的运行期内部检查机制 如:指针检查、数组下标检查、运行期类型检查等 断言的使用(非关键字) assert ASSERT assert()用法 assert宏的原型定义在assert.h中,其作用是如果它的条件返回错误,则终止程序执行 一般在Debug版有效,在Release版不起作用 用法: 在函数开始处检验传入参数的合法性 每个assert最好只检验一个条件 不要使用有副作用的语句 assert和后面的语句应空一行,以形成逻辑和视觉上的一致感 有的地方,assert不能代替条件过滤 例子 double sqrt(double x) { assert( x=0 ); //pre-condition //.... //.... //.... assert( fabs(y*y-x) eps ); //post-condition return y; } ASSERT和VERIFY 在VC环境下一般使用ASSERT和VERIFY 在Debug模式下作用基本一致,二者都对表达式的值进行计算,如果值为非0,则什么事也不做;如果值为0,则输出诊断信息。 在Release模式下效果完全不一样。ASSERT不计算表达式的值,也不会输出诊断信息;VERIFY计算表达式的值,但不管值为0还是非0都不会输出诊断信息。 因为 VERIFY() 违反了断言的思想,不能使程序代码和调试代码完全分离,最终可能会带来很多麻烦。因此,建议尽量少用不用这个宏。 Assert方式的缺点 不能直观地掌握出错地点 不能被捕获和重新处理 出错时不一定要中止,可能上层调用能够解决 如打开文件 在Debug版对性能有一定影响 Language Support in Java assert Expression1; assert Expression1 : Expression2 ; 语法: Expression2 can be any primitive type 从J2SE1.4之后,Java提供一些断言的支持,使用assert保留字 Expression1 must have type boolean or a compile-time error occurs. enabled or disabled 两种形式的 assert. e.g. it could serve as a unique integer code for the assertion Semantics: If assertions are disabled in a class, the assert statements contained in that class have no effect. If assertions are enabled, Expression1 is evaluated: — If it evaluates to false, an AssertionError is thrown. — If Expression1 evaluates to true, Expression2 is not evaluated. If Expression2 is present, then this is evaluated and passed to the constructor of the AssertionError; otherwise the parameterless constructor is used. assert Expression1; assert Expression1 : Expression2 ; new AssertionError(value) returns an assertion error that has the string representation of the value as the errors detail message. If an exception is thrown while either expression is being evaluated, the assert statement completes abruptly, throwing this exception. Although the assert construct is not a full-blown DbC facility, it ca
您可能关注的文档
- 《核苷(酸)类似物耐药与肝癌、肝衰竭的关系》-课件设计(公开).ppt
- 《荷塘月色》试用版》-课件设计(公开).ppt
- 《黑白新闻发言人公众演讲沟通技巧》-课件设计(公开).ppt
- 《恒星演化》-课件设计(公开).ppt
- 《很好荷叶圆圆》-课件设计(公开).ppt
- 《黑龙江旅游景点简介》-课件设计(公开).ppt
- 《弘扬和培育民族精神实用版》-课件设计(公开).ppt
- 《红楼梦》-课件设计(公开).ppt
- 《红酒酒具Vinomax韦玛仕葡萄酒具鉴赏》-课件设计(公开).ppt
- 《红楼梦十二钗判词》-课件设计(公开).ppt
- 2025年广西中考地理二轮复习:专题四+人地协调观+课件.pptx
- 2025年广西中考地理二轮复习:专题三+综合思维+课件.pptx
- 2025年中考地理一轮教材梳理:第4讲+天气与气候.pptx
- 第5讲+世界的居民课件+2025年中考地理一轮教材梳理(商务星球版).pptx
- 冀教版一年级上册数学精品教学课件 第1单元 熟悉的数与加减法 1.1.6 认识1-9 第6课时 合与分.ppt
- 2025年中考一轮道德与法治复习课件:坚持宪法至上.pptx
- 2025年河北省中考一轮道德与法治复习课件:崇尚法治精神.pptx
- 八年级下册第二单元+理解权利义务+课件-2025年吉林省中考道德与法治一轮复习.pptx
- 精品解析:湖南省娄底市2019-2020学年八年级(上)期中考试物理试题(原卷版).doc
- 2025年中考地理一轮教材梳理:第10讲+中国的疆域与人口.pptx
最近下载
- 工会内控制度.docx VIP
- 门店布局与商品陈列(第二版)全套PPT课件.pptx
- 4.2依法履行义务(教学课件)-2024-2025学年八年级道德与法治下册同步PPT课件+教学设计.pptx VIP
- 扳机点(激痛点)疗法(理论及实操演示附全身激痛点分布图).pptx
- 《金瓶梅》完整版本.ppt VIP
- 初中学业水平考试复习策略.ppt VIP
- EZVIZ 萤石 智能锁Y3000FV用户手册说明书.pdf
- 了解书的结构.完整版PPT文档课件.pptx VIP
- EXCITE-Piston Ring 基础教程介绍.pdf VIP
- 统编人教部编版语文三年级下册第八单元教材解读及教学目标教学建议教研备课校本培训.pptx
文档评论(0)