我正在爲我的「主」類編寫構造函數。它所做的第一件事就是調用一個方法來使用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