【发布时间】:2010-08-23 12:39:43
【问题描述】:
我正在为我的“主”类编写构造函数。它做的第一件事是调用一个方法来使用 commons-cli 来解析命令行。如果parseOptions 方法返回false,则发生错误,构造函数应该退出。
我尝试编写以下代码
if (!parseOptions(args)) return
但是编译器抱怨我有一个“方法定义之外的返回语句”。
没有调用System.exit(1) 或反转布尔值(并将我的所有其余逻辑放在if 语句中,有没有办法从构造函数“提前”返回?
我想我可以让parseOptions 方法抛出一个IllegalArgumentException 并在我的Main 对象中捕获它。
谢谢。
【问题讨论】:
-
虽然我同意其他答案,即如果无法将实例置于满足其类不变量的状态,则任何构造函数都不应正常返回,但我想知道您为什么反对使用
if? -
如果我有几个条件都可以导致提前返回,我最终会得到一个
if级联很多级别的深度。 -
所以?如果这是你的构造函数的逻辑,那就是你的构造函数的逻辑。通常还建议 不要 在您的构造函数中有很多复杂的逻辑。理想情况下,他们只是“记下”构成实例状态/值的值。
-
@Randall:我同意最后一点(非复杂构造函数)。
标签: scala constructor exit