有没有办法强制编译器(注释或其他)实现java函数永远不会返回(即总是抛出),以便随后它不会错误地将其用法作为其他函数中的最后一个语句返回非void ?
这是一个简化/组成的例子:
int add( int x, int y ) {
throwNotImplemented(); // compiler error here: no return value.
}
// How can I annotate (or change) this function, so compiling add will not yield
// an error since this function always throws?
void throwNotImplemented() {
... some stuff here (generally logging, sometimes recovery, etc)
throw new NotImplementedException();
}
谢谢。
答案 0 :(得分:5)
不,这是不可能的。
但请注意,您可以按照以下方式轻松解决问题:
int add( int x, int y ) {
throw notImplemented();
}
Exception notImplemented() {
... some stuff here (generally logging, sometimes recovery, etc)
return new NotImplementedException();
}
答案 1 :(得分:0)
为什么不直接从未实现的方法中抛出?
int add( int x, int y ) {
throw new UnsupportedOperationException("Not yet implemented");
}
即使方法没有返回int,这也会正常编译。它使用standard JDK exception,意在在这种情况下使用。