Java:通过布尔值,空指针或异常传递错误?

Kev*_*vin 0 java

我认为这是一个容易但重要的问题.

我正在写一个带有函数的类:

public MyClass myFunction(MyClass mc) { ... }
Run Code Online (Sandbox Code Playgroud)

在此函数中,它会更改mc的某些状态并将其返回.我明白没有必要因为mc是变化的.我想返回MyClass的原因是使用null来指示更新失败.

我可能会将返回类型更改为boolean并使用false来指示错误:

public boolean myFunction(MyClass mc) { ... }
Run Code Online (Sandbox Code Playgroud)

但我记得很久以前我读过一篇文章说这不是一个好习惯(虽然我忘了细节和原因).

我当然可以使用异常来表示错误:

public void myFunction(MyClass mc) throws MyException { ... }
Run Code Online (Sandbox Code Playgroud)

但我觉得这太重了.

我个人认为,如果错误在系统范围内有意义,那么应该使用异常.如果错误仅对调用者和函数有意义,则不应使用异常.但在这种情况下,我应该使用null或false来表示错误吗?

你认为最好的做法是什么?请让我知道你的意见.

非常感谢.

Ste*_*ker 5

失败是更新过程的预期部分吗?或者只有当这一切都发生灾难性错误时才会发生?

如果它是一个真正特殊的条件,那么你应该更喜欢使用例外.这种事情的返回值往往会被忽略(只看一些可怕的布尔返回File函数,比如mkdirs)

如果失败是尝试进行更新的预期部分,那么您应该返回布尔值或某种状态对象.