【发布时间】:2011-08-01 02:27:05
【问题描述】:
有时我想写一个 error() 函数,它最终肯定会调用 System.exit(),这意味着这个函数永远不会返回。但是,如果我在其他函数中调用 error(),我想这样写:
int fun() {
...
error();
}
但是编译器坚持在 error() 调用之后返回一个 int 值,因为它不知道 error() 永远不会返回。 我当然可以返回一个任意的 int,但是如果返回类型是一个复杂的类,我需要在代码中构造它,这很浪费时间。有没有办法告诉编译器一个函数永远不会返回?
【问题讨论】:
-
您的问题的答案是“否”。对 Java 语言手册的快速检查表明了这一点。为什么这么问?更重要的是,为什么不抛出异常而不是调用
System.exit()?
标签: java compiler-construction return