应该选择 抛出异常,因为使用返回 false 或者 null 的歧义太大。
比如,获取用户信息成功的情况下,返回的是一个数组,但是中途出错了,所以你返回了一个 false 或 null ,如果没有做判断,直接对返回信息进行 foreach
或者使用 array_*
方法,就会造成调用方发生未知异常,所以除了抛出异常,还要严格限定输入、输出值,让调用方减少疑惑。
function getUserInfo(int $id) : array;
function getUserInfo(int $id) : UserInfo;
补充:通过异常将错误的业务逻辑返回还可以解决深层次的问题,现在的业务流程往往都会有多层包裹,如果使用返回 false,null,void 这类值,还需要做层层判断,导致代码臃肿无比。而异常则可以选择性捕获终止业务等。
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…