Scala学习之路之篇十(scala异常处理)

Scala 异常处理

1、抛出异常

Scala 抛出异常的方法和 Java一样,使用 throw 方法

实例1:抛出异常

throw new IllegalArgumentException

2、捕获异常

异常捕捉的机制与其他语言中一样,如果有异常发生,catch字句是按次序捕捉的。

在catch字句中,越具体的异常越要靠前,越普遍的异常越靠后;
由于异常捕捉是按次序,如果最普遍的异常,Throwable,写在最前面,则在它后面的case都捕捉不到,因此需要将它写在最后面;
如果抛出的异常不在catch字句中,该异常则无法处理,会被升级到调用者处。
在Scala里,借用了模式匹配的思想来做异常的匹配,因此,在catch的代码里,是一系列case字句;
catch字句里的内容跟match里的case是完全一样的。
实例2:模式匹配的异常捕获

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 =>{    // 异常捕获1
            println("Missing file exception")
         }
         case ex: IOException => {             // 异常捕获2
            println("IO Exception")
         }
      }
   }
}

finally 语句

finally 语句用于执行不管是正常处理还是有异常发生时都需要执行的步骤
实例3:

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

 

你可能感兴趣的:(Scala)