虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > Scala > Scala异常处理

Scala异常处理
类别:Scala   作者:码皇   来源:互联网   点击:

Scala的异常的工作像许多其他语言,如Java异常。而不是正常方式返回的值,方法可以通过抛出一个异常终止。然而,Scala实际上并没有检查异常。当要处理异常,那么可使用try{ }catch{ } 块,就像在Java中除了

Scala的异常的工作像许多其他语言,如Java异常。而不是正常方式返回的值,方法可以通过抛出一个异常终止。然而,Scala实际上并没有检查异常。

当要处理异常,那么可使用try{...}catch{...} 块,就像在Java中除了catch块采用匹配识别和处理异常。

抛出异常:

抛出一个异常看起来类似于Java。创建一个异常对象,然后使用throw关键字把它抛出:

throw new IllegalArgumentException

捕获异常:

Scala中try/catch在一个单独的块捕捉任何异常,然后使用case块进行模式匹配,如下图所示:

  1. import java.io.FileReader 
  2. import java.io.FileNotFoundException 
  3. import java.io.IOException 
  4.  
  5. object Test { 
  6.    def main(args: Array[String]) { 
  7.       try { 
  8.          val f = new FileReader("input.txt") 
  9.       } catch { 
  10.          case ex: FileNotFoundException =>{ 
  11.             println("Missing file exception") 
  12.          } 
  13.          case ex: IOException => { 
  14.             println("IO Exception") 
  15.          } 
  16.       } 
  17.    } 

当上述代码被编译和执行时,它产生了以下结果:

C:/>scalac Test.scala
C:/>scala Test
Missing file exception

C:/>

这种try-catch表达的行为在其他语言处理异常是一样的。body是执行体,如果它抛出一个异常,每个catch子句都依次尝试捕获。

finally子句:

如果想知道引起一些代码是如何表达的终止执行,可以用一个finally子句包住一个表达式,finally块什么时候都会执行。

  1. import java.io.FileReader 
  2. import java.io.FileNotFoundException 
  3. import java.io.IOException 
  4.  
  5. object Test { 
  6.    def main(args: Array[String]) { 
  7.       try { 
  8.          val f = new FileReader("input.txt") 
  9.       } catch { 
  10.          case ex: FileNotFoundException => { 
  11.             println("Missing file exception") 
  12.          } 
  13.          case ex: IOException => { 
  14.             println("IO Exception") 
  15.          } 
  16.       } finally { 
  17.          println("Exiting finally...") 
  18.       } 
  19.    } 

 

当上述代码被编译和执行时,它产生了以下结果:

C:/>scalac Test.scala
C:/>scala Test
Missing file exception
Exiting finally...

C:/>
 
相关热词搜索: Scala异常处理
上一篇:Scala文件I/O
下一篇:最后一页