使用投掷时我应该使用投掷吗?

时间:2013-10-24 18:15:56

标签: java nullpointerexception

我的方法有一个抛出NullPointerException的返回类型。

public class Student {
    public String studentOne() {    
        //code to get name
        if(name == null)
            throw new NullPointerException("Error");
        else
            return name; 
    }
}

我的问题是..我应该在抛出新异常时使用public String studentOne throws NullPointerException吗?

P.S:我知道抛出nullPointerException不是最好的做法。但它在我的项目中是必需的

2 个答案:

答案 0 :(得分:6)

NullPointerException是一个未经检查的异常,因此您不需要也不应该将其声明为抛出。您不需要为任何未经检查的异常执行此操作。当然,如果你声明它们,编译器无论如何都会忽略它们。

至于抛出一个NPE,只要值为null,当你无法继续使用该方法时,抛出它就可以了。但是,无论是显式抛出它还是在引发它时都会隐式抛出它都没有任何区别。只是您可以在明确抛出时传递自定义消息。

当然,您可以在方法中记录此行为,在某些情况下它会抛出NPE,以便让用户知道这一点。

答案 1 :(得分:1)

更好的解决方案是向方法

添加文档
/**
 * @param  name - not null. NullPointerExcpetion will thrown in case of null
 *
 * @return some string
 */  
public String studentOne(String name)
{
   // ...
}      

之间没有区别
 public String studentOne(String name)  

 public String studentOne(String name) throw NullPointerException

因为NullPointerException是未经检查的例外