具有异常处理程序的方法可以没有return语句吗?!?
-下面是已编辑的代码。
public int pop() throws NullPointerException {
try{
if (a.isEmpty()){
throw new NullPointerException();
}
int x = (int)a.remove(a.size() - 1);
if (x == (int)min.get(min.size() - 1)) {
min.remove(min.size() - 1);
}
return x;
}catch(NullPointerException n) {
System.out.println("There are no elements to pop.");
}
return -1;
}
答案 0 :(得分:2)
如果throw new <exception>
语句始终是方法主体执行路径中的最后一条语句,或者方法的返回类型为void
。
在您的代码中,您根本无法处理EmptyStackException
。问题来自引入catch
,而结尾没有return
或throw
语句。
public int pop() {
if (a.isEmpty()){
throw new NullPointerException();
}
int x = (int) a.remove(a.size() - 1);
if (x == (int) min.get(min.size() - 1)) {
min.remove(min.size() - 1);
}
return x;
}