Scala 異常處理
scala 異常處理
scala 的異常處理和其它語(yǔ)言比如 java 類(lèi)似。
scala 的方法可以通過(guò)拋出異常的方法的方式來(lái)終止相關(guān)代碼的運(yùn)行,不必通過(guò)返回值。
1. 拋出異常
scala 拋出異常的方法和 java一樣,使用 throw 方法,例如,拋出一個(gè)新的參數(shù)異常:
throw new illegalargumentexception
2. 捕獲異常
異常捕捉的機(jī)制與其他語(yǔ)言中一樣,如果有異常發(fā)生,catch 字句是按次序捕捉的。因此,在 catch 字句中,越具體的異常越要靠前,越普遍的異常越靠后。 如果拋出的異常不在 catch 字句中,該異常則無(wú)法處理,會(huì)被升級(jí)到調(diào)用者處。
捕捉異常的 catch 子句,語(yǔ)法與其他語(yǔ)言中不太一樣。在 scala 里,借用了模式匹配的思想來(lái)做異常的匹配,因此,在 catch 的代碼里,是一系列 case 字句,如下例所示:
import java.io.filereader import java.io.filenotfoundexception import java.io.ioexception object test { ? ?def main(args: array[string]) { ? ? ? try { ? ? ? ? ?val f = new filereader("input.txt") ? ? ? } catch { ? ? ? ? ?case ex: filenotfoundexception =>{ ? ? ? ? ? ? println("missing file exception") ? ? ? ? ?} ? ? ? ? ?case ex: ioexception => { ? ? ? ? ? ? println("io exception") ? ? ? ? ?} ? ? ? } ? ?} }
執(zhí)行以上代碼,輸出結(jié)果為:
$ scalac test.scala $ scala test missing file exception
catch字句里的內(nèi)容跟match里的case是完全一樣的。由于異常捕捉是按次序,如果最普遍的異常,throwable,寫(xiě)在最前面,則在它后面的case都捕捉不到,因此需要將它寫(xiě)在最后面。
3. finally 語(yǔ)句
finally 語(yǔ)句用于執(zhí)行不管是正常處理還是有異常發(fā)生時(shí)都需要執(zhí)行的步驟,范例如下:
import java.io.filereader import java.io.filenotfoundexception import java.io.ioexception object test { ? ?def main(args: array[string]) { ? ? ? try { ? ? ? ? ?val f = new filereader("input.txt") ? ? ? } catch { ? ? ? ? ?case ex: filenotfoundexception => { ? ? ? ? ? ? println("missing file exception") ? ? ? ? ?} ? ? ? ? ?case ex: ioexception => { ? ? ? ? ? ? println("io exception") ? ? ? ? ?} ? ? ? } finally { ? ? ? ? ?println("exiting finally...") ? ? ? } ? ?} }
執(zhí)行以上代碼,輸出結(jié)果為:
$ scalac test.scala $ scala test missing file exception exiting finally...
相關(guān)文章
- JDBC 教程
- JDBC 驅(qū)動(dòng)類(lèi)型
- JDBC 連接數(shù)據(jù)庫(kù)范例
- JDBC 連接數(shù)據(jù)庫(kù)步驟
- JDBC Statement, PreparedStatement 和 CallableStatement
- JDBC ResultSet 結(jié)果集
- JDBC Resultset 結(jié)果集范例
- JDBC 事務(wù)保存點(diǎn)范例
- Scala 教程
- Scala 簡(jiǎn)介
- Scala 類(lèi)和對(duì)象
- Scala 文件 I/O
- Spring 教程
- Spring 模塊
- Spring 依賴(lài)注入
- Spring 自動(dòng)裝配
- Spring MVC教程
- Spring MVC表單標(biāo)簽庫(kù)
- Spring security