我的应用程序从文件读取一些配置值。如果在这个过程中有任何错误,我想为这些配置参数设置默认值。我做的是: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