與Java,斯卡拉讓你做一個光禿禿的 「嘗試」,沒有任何一個catch或finally從句:Scala的「嘗試」是什麼意思,沒有捕捉或最終阻止?
scala> try { println("Foo") }
Foo
,這實際上有超越任何意義,
{ println("Foo") }
?
與Java,斯卡拉讓你做一個光禿禿的 「嘗試」,沒有任何一個catch或finally從句:Scala的「嘗試」是什麼意思,沒有捕捉或最終阻止?
scala> try { println("Foo") }
Foo
,這實際上有超越任何意義,
{ println("Foo") }
?
Scala的異常處理通過將任何異常傳遞給匿名catch函數來工作。 catch函數通過模式匹配捕獲到的異常來工作,如果不匹配,它會通過異常。
catch函數是可選的,如果省略,則異常直接傳遞。所以基本上
try { exceptionThrowingFunction() }
是一樣的language spec PDF的更多信息,
exceptionThrowingFunction()
見章節6.22。
我不這麼認爲。我認爲Scala允許在沒有捕獲的情況下進行嘗試,或者最終因爲沒有理由禁止它。
好吧,假設從來沒有任何實際的理由使用裸露的「嘗試」,一個禁止它的理由是捕捉程序員的錯誤並減少潛在的混淆。但是,無論如何,這不是什麼大不了的事。 – 2009-10-10 11:37:19
從Scala 2.11開始,我們收到警告。 '警告:沒有捕捉或最後的嘗試等同於將其身體放在一個塊中;沒有例外處理。' – Jus12 2015-04-15 11:00:50