2013-06-30 89 views
0

在Python,我可以做到以下幾點:Scala:除了scala之外,還有其他的嘗試嗎?

try{ 
something 
} 
except{ 
whoops that didn't work, do this instead 
} 

,我試圖找出是否有一種方法可以做到這同樣的事情在斯卡拉。我看到很多方法來捕獲異常,但我沒有看到一種方法來忽略異常並執行其他操作。

編輯:

所以這裏就是我在斯卡拉嘗試:

try{ 
something 
} 
catch{ 
case ioe: Exception => something else 
} 

但它似乎並不喜歡它......

+0

python的'try ... except'與scala的'try ... catch'不同嗎?你想處理所有的異常或只是一些特定的? –

回答

5

我看不出有任何理由Scala的嘗試趕上不符合您的需求:

scala> val foo = 0 
foo: Int = 0 

scala> val bar = try { 1/foo } catch { case _: Exception => 1/(foo + 1) } 
bar: Int = 1 
+0

哦,我想我知道發生了什麼。我正在使用一個特定的案例,但你正在推廣它。是? –

+1

@ Shelby.S是的,我使用的是泛化版本,但是特定的情況應該可以正常工作,只要它對應於異常:'catch {case _:java.lang.ArithmeticException => ...}上面的代碼也應該可以工作。 –

+0

謝謝!我認爲這是我的問題。 –

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 
相關問題