我正在为我的“主”类编写构造函数。它所做的第一件事就是调用一个方法来使用commons-cli来解析命令行。如果parseOptions
方法返回false,则发生错误,并且构造函数应该退出。从Scala构造函数提前返回
我试着写了下面的代码
if (!parseOptions(args)) return
但是编译器会抱怨,我有一个“Return语句之外的方法定义”。
短调用System.exit(1)
或反转布尔(并把我所有的if
语句中逻辑的其余部分的,有没有办法从一个构造函数返回“早”?
我想我可以有parseOptions
方法抛出IllegalArgumentException
,赶上,在我Main
对象。
感谢。
虽然我与其他答案同意,没有构造函数通常应该返回,如果它无法为了使实例处于满足类不变量的状态,我想知道为什么你不愿意使用'if'? – 2010-08-23 15:05:10
如果我有几个条件都可以导致提前回报,那么最终我会得到一个很深层次的“if”级联。 – Ralph 2010-08-23 16:21:49
那么?如果这是你的构造函数的逻辑,那就是你的构造函数的逻辑。一般建议*不要*在构造函数中有很多复杂的逻辑。理想情况下,他们只是“记下”构成实例状态/值的值。 – 2010-08-23 20:39:47