在二传手中验证:哪种方法更好?

Dmy*_*sun 4 oop validation design-patterns

我和朋友有争执.

他说我这个代码:

method SetBalance(balance) {
    if (balance > 0) {
        this.balance = balance;
        return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

比这更好:

method SetBalance(balance) {
    if (balance < 0) {
        throw new InvalidArgumentException("Balance couldn't be negative")
    }
    this.balance = balance; 
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:"哪种方法更适合验证?" 为什么?

谢谢.

Luc*_*ore 6

啊.返回状态与异常.

我更喜欢抛出异常,因为你不能真正忽略异常.程序崩溃,或者您必须明确地捕获并处理它.

您可以忽略退货状态.

此外,这不是现代编程中存在例外的原因吗?处理好......异常(余额<= 0,不应该发生的事情).