在Python中,我可以执行以下操作:
try{
something
}
except{
whoops that didn't work, do this instead
}
我想弄清楚是否有办法在Scala中做同样的事情。我看到很多方法来捕获异常,但我还没有看到一种忽略异常并做其他事情的方法。
编辑:
所以这就是我在Scala中尝试的内容:
try{
something
}
catch{
case ioe: Exception => something else
}
但它似乎不喜欢它......
答案 0 :(得分:5)
我没有看到任何原因导致scala的try-catch不符合您的需求:
scala> val foo = 0
foo: Int = 0
scala> val bar = try { 1 / foo } catch { case _: Exception => 1 / (foo + 1) }
bar: Int = 1
答案 1 :(得分:2)
scala.util.Try
的一些免费广告,其中包含额外的设施,其中最重要的是scalac不会骚扰你的全部内容:
scala> try { ??? } catch { case _ => }
<console>:11: warning: This catches all Throwables. If this is really intended, use `case _ : Throwable` to clear this warning.
try { ??? } catch { case _ => }
^
scala> import scala.util._
import scala.util._
scala> Try { ??? } map (_ => 1) recover { case _ => 0 } foreach (v => Console println s"Done with $v")
Done with 0