代码洁癖系列(六):处理错误

程序运行过程当中,有些错误是不可避免的,而如何使程序在出现错误时代码仍然正常工做就成了程序员的平常工做之一。那么处理错误和代码整洁有什么关系呢?程序员

前面咱们提到过,try-catch代码块会破坏代码的结构。可是,咱们在处理错误时又不得不使用try-catch代码块,这样才能让咱们的程序保持健壮。那么如何兼顾整洁和健壮呢,这就是咱们今天要讨论的内容。微信


不要使用返回码编辑器

在上古时期,不少语言还都不支持异常,程序员们只能约定好返回的错误码,经过不一样的错误码对代码进行错误处理。这么作须要调用者在调用方法后立刻判断返回值来决定是否须要处理错误。而这一步骤每每被遗忘,就会致使程序出现不可预估的问题。因此,如今咱们有了throw和try-catch这样的“热武器”,就不要再用错误码这样的“冷兵器”了。否则很容易就会被别人给秒杀的。函数

try-catch-finally相信你们都很熟悉,不熟悉的话,能够前往与本公号达成合做的各大搜索引擎进行搜索,保证有答案。flex

异常抛出的层级搜索引擎

咱们不但愿程序中充满了try-catch代码块,这样会使程序的可读性变差。所以,咱们要适当的使用throw语句,将异常抛出。交给上一层去处理。可是,若是只由最顶层的代码去处理异常,整个程序看上去是会整洁一些,但当咱们须要修改某个底层代码抛出的异常时会发生什么呢?咱们须要找到往上抛的每个方法去修改它的签名,抛出新的异常,并从新发布。这会使咱们的工做量增长好几倍。因此,咱们的异常最好在本层进行统一处理,或者在抛出后的上一层就进行处理。spa


说明发生异常的环境.net

在Java中,系统异常一般会给出调用栈,便于咱们进行问题的定位和调试。对于咱们本身抛出的异常,也应该给出异常发生的环境,例如列出调用栈,给出请求参数等等。3d


远离null值指针

咱们在读、写代码时,必定有被好多层的空指针判断折磨的经历。一不当心漏掉一个判断,那么程序就会出现空指针异常,这个异常要么被上层的catch捕获,要么直接抛出。很明显,这两种结果都不是咱们想要的。怎么远离空指针异常呢?

首先,代码的返回值不要返回null。能够选择直接抛出一个异常,或者返回一个特定的值,好比空对象等。

其次,代码调用时,参数不要传null,由于一旦传null,那么在方法体中就须要对这个参数进行非空判断。而目前尚未什么好的方法能够简单高效的处理参数外部传来的null,只能使用if判断。所以但愿你们在调用别的方法时尽可能不要传入null。


小结

本文的主要目的是使咱们的代码兼顾整洁性和健壮性。这就须要咱们将错误处理独立于主逻辑以外,使错误就能够被单独处理,不但可以加强可读性,还能加强可维护性。最后获得的就是咱们但愿看到的整洁而健壮的代码。若是以为文章不错的话,欢迎帮忙点发。

END
往期精彩回顾
代码洁癖系列(五):外在的格式美
代码洁癖系列(四):可忽略的注释

代码洁癖系列(三):整洁的类和函数

代码洁癖系列(二):命名的艺术

代码洁癖系列(一):什么是整洁代码

本文分享自微信公众号 - 代码洁癖患者(Jackeyzhe2018)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索