Java:具有异常处理程序的方法可以没有return语句吗?

时间:2019-02-28 22:04:40

标签: java exception-handling return try-catch

具有异常处理程序的方法可以没有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;
}

1 个答案:

答案 0 :(得分:2)

如果throw new <exception>语句始终是方法主体执行路径中的最后一条语句,或者方法的返回类型为void

在您的代码中,您根本无法处理EmptyStackException。问题来自引入catch,而结尾没有returnthrow语句。

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;
}