Java 编译器错误 : Missing Return Statement

标签 java exception compilation compiler-errors stack

所以我得到了编译器错误,我错过了一个 return 语句,我已经查看了其他类似的问题,但我仍然对这个问题感到困惑。

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。如果您将其定义为检查异常,则需要声明它throws EmptyStackException。如果您不捕获它,那么该方法将始终返回值或抛出异常,这将满足编译器的要求。

请注意,可以在 catch block 之后返回一个值。这也会满足编译器的要求,但是您会返回什么?无效的?然后调用者必须测试 null,但调用者也可能捕获 EmptyStackException

关于Java 编译器错误 : Missing Return Statement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29310907/

相关文章:

java - 可以退出代码还是应该终止 main ?

asp.net - 扩展从 JQuery 调用 Web 服务时从 ASP.NET 抛出的异常

java - 在java中将像素数据转换为图像

java - 如何在 Java 中将文本打印为 HTML

java - SimpleJdbcInsert 由于自动生成的 id 为空而无法插入(HSQLDB)

compilation - P3DFFT 编译 - "Undefined reference"但库已链接

eclipse - 如何在 Eclipse 上编码和编译 Matlab mex 文件?

java - 具有 XML 配置的 ActiveMQ 嵌入式代理主题到队列桥

c# - 捕获异常并保持 GUI 逻辑分离

python - PyInstaller - 导入错误 : No module named _bootlocale