2009-10-10 37 views
25

與Java,斯卡拉讓你做一個光禿禿的 「嘗試」,沒有任何一個catch或finally從句:Scala的「嘗試」是什麼意思,沒有捕捉或最終阻止?

scala> try { println("Foo") } 
Foo 

,這實際上有超越任何意義,

{ println("Foo") } 

+1

從Scala 2.11開始,我們收到警告。 '警告:沒有捕捉或最後的嘗試等同於將其身體放在一個塊中;沒有例外處理。' – Jus12 2015-04-15 11:00:50

回答

25

Scala的異常處理通過將任何異常傳遞給匿名catch函數來工作。 catch函數通過模式匹配捕獲到的異常來工作,如果不匹配,它會通過異常。

catch函數是可選的,如果省略,則異常直接傳遞。所以基本上

try { exceptionThrowingFunction() } 

是一樣的language spec PDF的更多信息,

exceptionThrowingFunction() 

見章節6.22。

1

我不這麼認爲。我認爲Scala允許在沒有捕獲的情況下進行嘗試,或者最終因爲沒有理由禁止它。

+5

好吧,假設從來沒有任何實際的理由使用裸露的「嘗試」,一個禁止它的理由是捕捉程序員的錯誤並減少潛在的混淆。但是,無論如何,這不是什麼大不了的事。 – 2009-10-10 11:37:19