为啥一定要处理各种错误事件呢?
每个函数,返回错误,一定和输入的条件相关,特定的条件,导致特定的错误。
一个使用者,在使用某个函数的时候,一定是基于一定的目的,因此,输入的条件应该是有限集,因此,返回的错误,应该是有限集。
一般说来,设计函数应该遵循“懒汉”原则,就是能自己处理的问题,尽量自己内部处理,返回的错误信息越少越好,免得对应用者产生误导。
我做函数,一般先写成void,实在有必要了,调用者需要查询执行结果,改成bool,再实在不行了,调用者要区分几种状态,才改成int。
到目前为止,我写了十几年,返回信息最多的就是三态,就是最多三种可能的结果。所以我的函数调用都很简单。
至于错误,其实很少返回给上层的,基本上都是内部处理。
比如一个队列的addlast函数,原则上返回操作的字节数,表示成功,如果失败,内存申请失败什么的,返回0好了,就这两类结果。
调用者也好判断,至于添加失败了应该做什么,这本来就不是底层函数关心的事情,由调用者负责好了。对于调用者来说,也根本就不关心底层出现了哪些错误,知道本次操作失败就好了,自然有解决之道。
因此,函数构型的设计,应该遵循尽量简单的原则。千万不要很负责任地一下返回十几种错误,那函数基本上就不可用了。因为没有人有耐心,每调用一个函数,都要处理几十种错误的返回可能。