一起學Scala 異常處理
Scala 是一門多正規化(multi-paradigm)的程式語言,設計初衷是要整合物件導向程式設計和函數語言程式設計的各種特性。
Scala 執行在Java虛擬機器上,併相容現有的Java程式。 Scala 原始碼被編譯成Java位元組碼,所以它可以執行於JVM之上,並可以呼叫現有的Java類庫。 |
Scala 的異常處理和其它語言比如 Java 類似。
Scala 的方法可以透過丟擲異常的方法的方式來終止相關程式碼的執行,不必透過返回值。
丟擲異常
Scala 丟擲異常的方法和 Java一樣,使用 throw 方法,例如,丟擲一個新的引數異常:
throw new IllegalArgumentException
捕獲異常
異常捕捉的機制與其他語言中一樣,如果有異常發生,catch字句是按次序捕捉的。因此,在catch字句中,越具體的異常越要靠前,越普遍的異常越靠後。 如果丟擲的異常不在catch字句中,該異常則無法處理,會被升級到呼叫者處。
捕捉異常的catch子句,語法與其他語言中不太一樣。在Scala裡,借用了模式匹配的思想來做異常的匹配,因此,在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") } } } }
執行以上程式碼,輸出結果為:
$ scalac Test.scala $ scala Test Missing file exception
catch字句裡的內容跟match裡的case是完全一樣的。由於異常捕捉是按次序,如果最普遍的異常,Throwable,寫在最前面,則在它後面的case都捕捉不到,因此需要將它寫在最後面。
finally 語句
finally 語句用於執行不管是正常處理還是有異常發生時都需要執行的步驟,例項如下:
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...") } } }
執行以上程式碼,輸出結果為:
$ scalac Test.scala $ scala Test Missing file exception Exiting finally...
原文地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2725410/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 重學Java - 異常處理Java
- 異常篇——異常處理
- 異常處理
- JAVA學習之異常處理Java
- rust學習十、異常處理(錯誤處理)Rust
- 異常-throws的方式處理異常
- 異常處理與異常函式函式
- 異常處理 - Go 學習記錄Go
- 【java學習之再遇異常處理】Java
- JavaScript 異常處理JavaScript
- ThinkPHP 異常處理PHP
- React 異常處理React
- 08、異常處理
- JAVA 異常處理Java
- JAVA異常處理Java
- Abp 異常處理
- oracle異常處理Oracle
- PowerShell 異常處理
- plsql異常處理SQL
- Swift 異常處理Swift
- JS異常處理JS
- app異常處理APP
- Oracle 處理異常Oracle
- MySQL異常處理MySql
- 異常處理 (轉)
- golang - 異常處理Golang
- 異常處理2
- 異常處理1
- 異常的處理
- Java 異常處理Java
- 異常處理機制(二)之異常處理與捕獲
- JSP 異常處理如何處理?JS
- Java 異常表與異常處理原理Java
- restframework 異常處理及自定義異常RESTFramework
- swoft 學習筆記之異常處理筆記
- windows核心程式設計---未處理異常,向量化異常處理與C++異常Windows程式設計C++
- Python異常處理Python
- PHP 核心 - 異常處理PHP