从业这么多年,每当谈起异常,都是懵懵懂懂,只是依稀记得它是处理错误的,当程序出错,日志里会有异常日志,可以查看异常定位错误。但是最近突然发现一个问题,那就是处理错误不一定非的要用异常啊,比如说参数合法性检查等等,判断是否为空后直接返回校验信息等,通过程序的各种手段都可以处理,那么为什么要用异常呢?它到底能解决什么问题呢?
我们平时写程序时,很多人都忽略了一个问题,那就是“程序是否正确的执行完了”,而往往只是关心是否执行完了。这样往往会将真正抓住错误的时机错失,得到的是衍生出来的后续错误,并不是此次事故的真正原因。所以我们需要一种对错误的处理机制。
早期没有异常处理机制时。错误的处理模式往往是会返回某个特殊值或设置某个标志,并且假定调用者将对这个返回值或标志进行检查,以判定是否发生了错误。然而随着时间的推移,人们发现,高傲的程序员们更倾向于:“错误也许会发生,但那是别人造成的,不关我的事”。所以不检查的情况就不足为奇了。有这样的一部分函数,往往处理这种检查很无聊,比如:println。如果的确每次调用方法都彻底检查,代码将会变得难以阅读。并且需要定义每种包含错误信息的数据结构作为函数的返回类型。
- 如果没有异常,那么就必须检查特定错误,并在程序中处理它,这样代码的复用率会降低。
- 有了异常机制,就可以把“描述在正常执行过程中做什么事”的代码和“出了问题怎么办”的代码分离。
所以设计异常的好处:能够解放判断返回值的方式,提供一种上抛的处理机制,降低代码的判断复杂度,并能保证捕获这个异常,集中处理,增强代码复用率。