我正在为我的“主”类编写构造函数。它做的第一件事是调用一个方法来使用 commons-cli 来解析命令行。如果parseOptions
方法返回 false,发生错误,构造函数应退出。
我尝试编写以下代码
if (!parseOptions(args)) return
但是编译器提示我有一个“方法定义之外的返回语句”。
短电话
System.exit(1)
或反转 bool 值(并将我的所有其余逻辑放在 if
语句中,有没有办法从构造函数返回“早期”?我想我可以拥有
parseOptions
方法抛出 IllegalArgumentException
并在我的 Main
中找到它目的。谢谢。
最佳答案
不要尝试提前/过早返回,这会使您的代码更难更复杂,因为返回的副作用可能难以理解。而是使用异常来表示出现问题。
您可以在构造函数中使用 require。这不回来。但似乎抛出异常实际上更适合他的情况。
如:
class MyTest(
private var myValue: Int ){
require(myValue > 0) // Connected to constructor
}
defined class MyTest
scala> val x = new MyTest(10)
x: MyTest = MyTest@49ff4282
scala> val y = new MyTest(-10)
java.lang.IllegalArgumentException: requirement failed
at scala.Predef$.require(Predef.scala:133)
关于scala - 从 Scala 构造函数提前返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3547573/