Debugging, Exception Handling, and Defensive Programming
实验目标概述
本次实验重点训练学生面向健壮性和正确性的编程技能,利用错误和异常处理、断言与防御式编程技术、日志/断点等调试技术、黑盒测试编程技术,使程序可在不同的健壮性/正确性需求下能恰当的处理各种例外与错误情况,在出错后可优雅的退出或继续执行,发现错误之后可有效的定位错误并做出修改。
实验环境配置
安装SpotBugs
实验过程
Error and Exception Handling
新建了一个包,一个ReaderException类继承Exception类。
再在Readers类的三个子类里写check类,里面包括各种检查函数,比如检查是否缺元素,数字是否不合规矩等等。然后调用函数处用try catch包围。
TrackGame:运动员的元素是否缺少、位置不符合要求;数字是否不是最多2位小数等等。
AtomStructure:元素是否最多两位,轨道数和实际用到的轨道数是否一致等等。
SocialNetworkCircle:人与人间的亲密度是否符合要求小数要求,是否出现指向自己的社交关系等等。
Assertion and Defensive Programming
在 TrackGame 中,不管用户对比赛方案如何修改,每组比赛中的人数不超过跑道数
在 SocialNetworkCircle 中,不管社交关系如何增加或删除,第 i 层轨道上的人与中心点的人之间的最短路径等于 i
Logging
使用java logging增加了日志功能,配置log4j.properties文件。
Testing for Robustness and Correctness
可以有非法小数,元素缺失,匹配不上等等各种情况。
针对以上情况编写测试用例,并将错误文件一起放入txts文件夹中。
SpotBugs tool
发现了哪些错误,每种错误代表什么不良的编程习惯
对代码修改,消除这些错误。
有些很奇怪的潜在错误,按照他所给的指导进行改正。
Debugging
理解待调试程序的代码思想
发现并定位错误的过程
改正并验证正确