+-
Java编译器错误:缺少返回语句
所以我得到编译器错误,我错过了一个返回语句,我看了其他类似的问题,但我仍然对此事感到困惑.

public String pop()
{
  try
  {
    if(top == -1)
    {
      throw new EmptyStackException("The stack is empty!");
    }
    String x = stack[top];
    top--;
    return x;
  }
  catch (EmptyStackException e)
  {
    System.out.println("The stack is empty!");
  }
}

如果之前已经提出过这个问题,我会提前道歉,但我已经看了很多其他人,我似乎无法弄清楚这一点.

最佳答案
如果捕获到异常,pop的返回值是多少?此执行路径中没有return语句.这就是编译器抱怨的原因.

在这种情况下,pop的调用者需要处理EmptyStackException.不要在pop方法中捕获EmptyStackException.如果将其定义为已检查的异常,则需要声明它抛出EmptyStackException.如果你没有捕获它,那么该方法将始终返回值或抛出异常,这将满足编译器.

请注意,可以在catch块之后返回一个值.这也将满足编译器,但你会回报什么?空值?然后调用者必须测试null,但调用者也可以捕获EmptyStackException.

点击查看更多相关文章

转载注明原文:Java编译器错误:缺少返回语句 - 乐贴网