我的應用程序從文件讀取一些配置值。如果在這個過程中有任何錯誤,我想爲這些配置參數設置默認值。我做的是:Catch的返回值
val (param1, param2) = {
try{
val props = new java.util.Properties
props.load(getClass.getResource("/myapp.properties").openStream)
(
props.getProperty("param1", "default1"),
props.getProperty("param2", "default2")
)
}
catch{
case _ => ("default1", "default2")
}
}
我知道,如預期,如果有一個例外,我在catch塊正在做是行不通的。有沒有辦法解決它?我使用Scala的2.9
爲什麼你認爲這不會按預期工作?你可能希望在捕捉什麼時候少一點混雜,但除此之外,它看起來可行,即使不是慣用的scala。 – Impredicative 2013-02-28 12:18:03
@Impredicative:我已經嘗試將它改爲'case _ =>(「def1」,「def2」,「junk」),編譯器並沒有抱怨,我把它解釋爲一個表示結果可能被忽略的標誌。此外,大多數情況下,一個寫入返回「Unit」的東西(如打印錯誤消息等)。編譯器如何知道何時使用結果? – Eduardo 2013-02-28 12:19:49
編譯器推斷返回類型。如果你返回不同的類型,它很可能會推斷「任何」。如有疑問,請明確指定返回類型:如果您錯誤地返回錯誤類型,將導致編譯錯誤。 – bluenote10 2013-02-28 12:26:57