Scala異常處理

Scala的異常處理類似許多其他語言(如Java)。它不是以正常方式返回值,方法可以通過拋出異常來終止。 但是,Scala實際上並沒有檢查異常。

當您想要處理異常時,要像Java一樣使用try {...} catch {...}塊,除了catch塊使用匹配來識別和處理異常。

引發異常

拋出異常看起來與Java中的異常一樣。創建一個異常對象,然後使用throw關鍵字將其拋出如下。

throw new IllegalArgumentException

捕獲異常

Scala允許在單個塊中try/catch任何異常,然後使用case塊對其進行模式匹配。嘗試以下示例程式來處理異常。

import java.io.FileReader
import java.io.FileNotFoundException
import java.io.IOException

object Demo {
   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")
         }
      }
   }
}

將上述程式保存在原始檔案:Demo.scala中,使用以下命令編譯和執行此程式。

D:\>scalac Demo.scala
D:\>scala Demo
Missing file exception

try-catch運算式的行為與其他具有異常的語言相同。它在主體中執行,如果它拋出一個異常,則會依次嘗試每個catch子句。

finally子句

如果希望引發一些代碼執行,無論運算式如何終止,都會執行在finally子句包裝運算式。嘗試以下程式。

import java.io.FileReader
import java.io.FileNotFoundException
import java.io.IOException

object Demo {
   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...")
      }
   }
}

將上述程式保存在原始檔案:Demo.scala中,使用以下命令編譯和執行此程式。

D:\>scalac Demo.scala
D:\>scala Demo
Missing file exception
Exiting finally...

上一篇: Scala正則運算式 下一篇: Scala提取器