3种错误处理的方法
在写代码之前,要考虑单元测试。如果能够设计全面的单元测试用例并在代码中体现出来,那么写出的代码自然也就是完整正确的了。通常我们从功能测试、边界测试和负面测试三方面来设计测试用例。
其中,负面测试是指当输入不符合要求的时候,程序还能做出合理的错误处理。
函数返回值
函数用返回值来告知调用者是否出错,如很多Windows的API。其缺点是使用不便。
全局变量
设置一个全局变量,当发生错误时改变该变量的值,其缺点是可能调用者会忘记检查该变量。
异常
当函数运行出错时,抛出一个异常。我们能显式地划分程序正常运行的代码块(try模块)和处理异常的代码块(catch模块),逻辑比较清晰。
代码的鲁棒性
鲁棒性对软件开发非常重要,提高代码的鲁棒性的有效途径是进行防御性编程,它是指一种编程习惯,是指预见在什么地方可能会出现问题,并为这些可能出现的问题制定处理方式。比如试图打开文件时发现文件不存在,我们可以提示用户检查文件名和路径;当服务器连接不上时,我们可以试图连接备用服务器等。
在面试中,最简单也最实用的防御性编程就是在函数入口添加代码以验证用户输入的参数是否符合要求。
写代码时应该考虑到的细节
小数判断相等
由于计算机中的小数表示存在精度限制,所以判断两个小数是否相等不能用普通的if(a==b)
,而是应该用if( abs(a-b)<1e-6 )
。
大数问题
当处理整数时,要考虑到如果该整数特别大应该怎么办?这时候应该用string来表示和处理。