Sal*_*Sal 1 java exception nullpointerexception
我对Java中的最佳实践有疑问.我正在写一个类,它依赖于构造中的一个对象.实际上,如果在构造中传入的对象为null,则大多数功能都没有意义.我认为最好在对象构造中将null作为参数传递的情况下抛出异常,但我不知道在这种情况下最合适的异常是什么.我应该抛出NullPointer,IllegalArgument,Instatiation,甚至是Initialization异常.
我已经看到这些都在整个Java源代码库中使用,我似乎无法区分为什么在某些情况下使用NullPointer而在其他情况下使用IllegalArgument.我个人会认为如果在构造中传递了错误的参数,则应该发生一些初始化错误.
首先,你绝对应该抛出异常.这只是正确的事情.
至于你是否应该扔IllegalArgumentException或者NullPointerException--Josh Bloch在Effective Java中讨论这个问题,并且总的来说这NullPointerException是一个合理的选择.我不完全确定我同意(我可能会选择IllegalArgumentException),但最终它不太重要:你不应该直接捕获这些异常中的任何一个,并且堆栈跟踪将告诉你无论如何都存在问题.
(遗憾的是Java没有相当于.NET的功能ArgumentNullException,这意味着它的确如此.)
就个人而言,我是番石榴Preconditions班的忠实粉丝:
public class Foo {
private final Bar bar;
public Foo(Bar bar) {
this.bar = Preconditions.checkNotNull(bar);
}
}
Run Code Online (Sandbox Code Playgroud)
(有时与静态导入一起使用checkNotNull.)
| 归档时间: |
|
| 查看次数: |
167 次 |
| 最近记录: |