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")
             }
          }
       }
    }
    
    尝试一下
    输出::
    
    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...")
          }
       }
    }
    
    尝试一下
    输出::
    
    Missing file exception
    Exiting finally...