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

// =============Scala 异常处理============
// ===========抛出异常=========
// Scala 抛出异常的方法和 Java一样,使用 throw 方法
// ------实例1:抛出异常
throw new IllegalArgumentException

// ===========捕获异常==========
// 异常捕捉的机制与其他语言中一样,如果有异常发生,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...")
      }
   }
}

猜你喜欢

转载自blog.csdn.net/weixin_40873462/article/details/89678262