Scala中的異常處理以不同的方式實(shí)現(xiàn),但它的行為與Java完全相同,并與現(xiàn)有的Java庫(kù)無(wú)縫協(xié)作。
Scala中的所有異常都未選中;沒(méi)有檢查異常的概念。
拋出異常在Scala和Java中是一樣的。
throw new Exception("some exception...")
try/finally結(jié)構(gòu)在Scala和Java中也是一樣的,如下面的代碼所示。
try { throw newException("some exception...") } finally{ println("This will always be printed") }
try/catch在Scala是一個(gè)表達(dá)式,導(dǎo)致一個(gè)值。
Scala中的異常可以在catch塊中進(jìn)行模式匹配,而不是為每個(gè)不同的異常提供單獨(dú)的catch子句。
因?yàn)镾cala中的try/catch是一個(gè)表達(dá)式,所以可以在try / catch中包裝調(diào)用,并在調(diào)用失敗時(shí)分配默認(rèn)值。
以下代碼顯示了具有模式匹配catch塊的基本try/catch表達(dá)式。
try { file.write(stuff) } catch{ case e:java.io.IOException => // handle IO Exception case n:NullPointerException => // handle null pointer }
以下代碼顯示了通過(guò)調(diào)用Integer.parseIntand在try/catch中包裝調(diào)用的示例,如果調(diào)用失敗,則分配默認(rèn)值。
try{ Integer.parseInt("dog") }catch{ case_ => 0 }
更多建議: