下面的这张图大家很熟悉吧,可以毫不夸张的说,程序猿与bug的斗争史大部分来源于与null指针的斗争史。
稳住,不慌,今天我们通过防御式编程来减少它的出现。
不过需要注意的是,防御式编程不止能减少null指针错误。
什么是防御式编程?
简单的说,就是保护程序避免受到错误的输入数据的影响,将错误限制在有限的范围内。
如何采取防御式编程?
其实你可能已经采取了这种编程思想,如下面第一张图。
一有错误,记录日志,立即返回。为什么返回,因为可以避免错误继续影响接下的程序。
当然还有不错的错误输入数据处理机制,如断言和异常。
断言(Assert)
断言是指在开发期间使用的,让程序在运行时进行自检的代码。
可能说了还是有点蒙,看下面spring的两段源码,相信你就知道断言怎么使用了。
有错误输入数据直接抛出异常,不在执行接下来的代码,避免错误延续下去。
异常(try-catch)
异常是把代码中的错误或异常事件传递给调用方代码的一种特殊手段。
还是看代码。
捕捉try范围内的异常,在catch中对异常作出相应处理,避免影响接下来的程序代码。
总之,虽然采取防御式编程并不能让你与null指针Say Goodbye,但至少可以减少null指针难为你。