我有一个应该做某事的方法,返回值是布尔值(成功/失败)。
如果方法失败,导致失败的原因有几个,调用者(用户界面层)可以使用它向用户显示适当的消息(这样用户可以解决问题)。
我正在考虑使用适当的消息抛出异常但是失败原因是正常执行路径的一部分(与方法成功相比,几乎有20%的机会发生)。所以异常没有意义。
另一个选项是定义枚举并使用它来通知调用者有关失败原因(使用Tuple
作为返回类型或添加out
参数)。我之前没有见过这种设计!
告知来电者失败原因的最佳做法是什么?
答案 0 :(得分:2)
对于20%的案例,有一个例外协议并不可耻,除非从性能的角度来看这是一个非常关键的路径。传入一个状态出来的数组,但它看起来很难看。