【发布时间】:2013-09-26 17:47:54
【问题描述】:
阅读有效的java,它提到我们需要验证方法参数作为一种好习惯,公共方法抛出异常,私有方法断言。但是,我们是否需要对实例变量采取任何措施。
EG:(不要把例子当作用例,主要问题是Do I need to validate instance var or Not ?。例子只是用来解释我的意思。)
class Tree {
private Node root;
public doSomething() {
TreeNode node = root;
}
}
现在假设root 从未被初始化并且doSomething() 被直接调用,这将导致NullPtrException。
Do we need to guard against it ? If yes then how ? If no then why not ?
【问题讨论】:
-
只有在
doSomething中使用节点才会抛出 NullPointerException 你的例子是模糊的 -
为什么不直接使用正常的异常处理?
-
也许你可以在分配它之前使用 instanceof 运算符检查 root 是否是 TreeNode 的实例...
-
@All,请关注主要问题而不是示例。
-
@dganesh2002 从 OP 所说,问题不是 CastTypeException,而是 root 可能为 null 的事实
标签: java effective-java