代码整洁之道
接着上一章,这一章讲“错误处理”:
错误处理很重要,但如果它搞乱了代码逻辑,就是错误的做法。
一、使用异常而非返回码
很久以前,许多语言都不支持异常。这些语言处理和汇报错误的手段都有限。你要么设置一个错误标识,要么返回给调用者检查的错误码。这类手段的问题在于,它们搞乱了调用者代码。调用者必须在调用之后即刻检查错误。不幸的是,这个步骤很容易被遗忘。所以,遇到错误时,最好抛一个异常。调用很整洁,其逻辑不会被错误处理搞乱。
二、先写try-catch-finally语句
异常的妙处之一是,它们在程序中定义了一个范围。执行try-catch-finally语句中try部分的代码时,你是在表明可随时取消执行,并在catch语句中接续。
三、使用不可控异常
可控异常的代价就是违反开放/闭合原则。如果你在方法中抛出可控异常,而catch语句在三个层级之上,你就得在catch语句和抛出异常之间的每个方法签名中声明该异常。
四、给出异常发生的环境说明
应创建信息充分的错误消息,并和异常一起传递出去。在消息中,包括失败的操作和失败的类型。
五、依调用者需要定义异常类
对错误分类有很多方式。可以依其来源分类:是来自组件还是其他地方?或依赖其类型分类:是设备错误、网络错误还是编程错误?不过当我们在应用程序中定义异常类时,最重要的考虑是它们如何被捕获。
六、定义常规流程
特例模式(Special case pattern)。创建一个类或配置一个对象,用来处理特例。你来处理特例,客户代码就不用应付异常行为了。异常行为被封装到特例对象中。
七、别返回null值
返回null值,基本上是在给自己增加工作量,也是给调用者添乱。只要有一处没检查null值,应用程序就会失控。
八、别传递null值
在大多数编程语言中,没有良好的方法能对付由调用者意外传入的null值。事已至此,恰当的做法就是禁止传入null值。这样,你在编码时,就会时时记住参数列表中的null值意味着出问题了,从而大量避免这种无心之失。
相关阅读
“你拍一,我拍一,人人都能争第一……”,伴随两小儿的拍手歌,标志着新拍拍诞生的帷幕也就此拉开。在新拍拍发布会上首先亮相的是京东集
美团点评 UED 总监崔颖韧(下文简称崔校长)认为:曾经设计师仅靠一技之长就能在行业内生存,但互联网行业瞬息万变,如今,人工智能的设计水
向你展示10个不同行业的商业博客。如果你有博客,学习他们的经验能使你的博客更上一层楼;如果你还没有,那么现在就是你开博的好时机。
要保持领先,企业需要持续不停地开展新的战略行动,同时建立并利用多个瞬时优势。01如果让管理层来选期望的战略,不难理解大部分人会选
网上有很多成功人士,一天一扯蛋。正常人哪有那么多时间,觉得现在电视剧编剧都太差了!就应该找这群大神们来编写。他们比安徒生还会