scala中的异常处理

有经验的码农都知道,程序开发的差不多的时候,为了提高程序的稳健性,是一定要加上异常处理机制的

网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、小程序定制开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了东平免费建站欢迎大家使用!

在scala中,用try/catch/finally实现该功能.

抛出异常

Scala 抛出异常的方法和 Java一样,使用 throw 方法,例如,抛出一个新的参数异常:

throw new IllegalArgumentException

捕获异常

异常捕捉的机制与其他语言中一样,如果有异常发生,catch字句是按次序捕捉的。因此,在catch字句中,越具体的异常越要靠前,越普遍的异常越靠后。 如果抛出的异常不在catch字句中,该异常则无法处理,会被升级到调用者处。

捕捉异常的catch子句,语法与其他语言中不太一样。在Scala里,借用了模式匹配的思想来做异常的匹配,因此,在catch的代码里,是一系列case字句,如下例所示:

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

执行以上代码,输出结果为:

$ scalac Test.scala
$ scala Test
Missing file exception

catch字句里的内容跟match里的case是完全一样的。由于异常捕捉是按次序,如果最普遍的异常,Throwable,写在最前面,则在它后面的case都捕捉不到,因此需要将它写在最后面。

finally 语句

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

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

执行以上代码,输出结果为:

$ scalac Test.scala
$ scala Test
Missing file exception
Exiting finally...

分享标题:scala中的异常处理
当前地址:http://www.36103.cn/qtweb/news13/9613.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联