Scal 异常处理

Scal 异常处理

Scala的异常处理方式与Java等许多其他语言相似。方法在正常情况下不会返回一个值,而是通过抛出异常来终止。不过,Scala实际上没有受检异常(checked exceptions)。

当您想处理异常时,可以使用与Java中类似的try{…}catch{…}块,不同的是catch块使用匹配(matching)来识别和处理异常。

抛出异常

抛出异常的方式与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 中。使用以下命令来编译和执行此程序。

命令

>scalac Demo.scala
\>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 中。下面的命令用于编译和执行该程序。

>scalac Demo.scala
\>scala Demo

输出

Missing file exception
Exiting finally...

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程