《代码整洁之道》第七章 错误处理


在这里插入图片描述

概述

错误处理很重要,但如果它搞乱了代码逻辑,就是错误的做法。

在本章中,我将概要列出编写既整洁又强固的代码——雅致地处理错误代码的一些技巧
和思路

1. 使用异常而非返回码

在很多以前的语言中(不像java这种异常处理机制),或者错误的写法中,存在有些代码的方法通过返回码判断错误逻辑,这显然是非常严重的错误。eg:
在这里插入图片描述

2. 先写Try-Catch-Finally语句

异常的妙处之一是,它们在程序中定义了一个范围。执行 try-catch- finally语句中try部分的代码时,你是在表明可随时取消执行,并在 catch语句中接续。

这样做的好处在于:易于清晰代码逻辑,控制事务范围

3. 给出异常发生的环境说明

你抛出的每个异常,都应当提供足够的环境说明,以便判断错误的来源和处所。在Java中,你可以从任何异常里得到堆栈踪迹( stack trace);然而,堆栈踪迹却无法告诉你该失败操作的初衷。

应创建信息充分的错误消息,并和异常一起传递出去。在消息中,包括失败的操作和败类型。如果你的应用程序有日志系统,传递足够的信息给 catch块,并记录下来。(可以给出调用参数等信息)

4. 包装异常的类型

假如调用者,依赖于第三方API,此API会抛出各种异常,如果由客户代码处理就会写出很多catch语句块,如下图:
在这里插入图片描述
这种时候我们可以将这个接口包装,抛出一个统一的异常类,方便客户代码处理。
在这里插入图片描述
这也是外观模式的应用之一。

5. 定义系统常规异常处理

如果是一些常规的系统异常,如果不用客户代码处理的就尽量在底层做好处理。

6. 别返回NULL值

可以敷衍说上列代码的问题是少做了一次null值检查,其实问题多多。如果你打算在方法中返回nu值,不如抛出异常,或是返回特例对象。如果你在调用某个第三方API中可能返回null值的方法,可以考虑用新方法打包这个方法,在新方法中抛出异常或返回特例对象。

在许多情况下,特例对象都是爽口良药。设想有这么一段代码:
在这里插入图片描述
现在, get Exployees可能返回null,但是否一定要这么做呢?如果修改 getEmployee,返回空列表,就能使代码整洁起来:
在这里插入图片描述

此条特别适用于返回List这种集合类的,单个对象的需要视情况而定—返回null或者抛出异常都要给到足够的方法说明。

最后的话

整洁代码是可读的,但也要强固。可读与强固并不冲突。如果将错误处理隔离看待,独立于主要逻辑就能写出强固而整洁的代码。做到这一步,我们就能单独处理它,也极大地提升了代码的可维护性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值