寒假学习日报(三十六)

  今日学习:scala

惰性函数:在调用的时候才会分配资源,非调用情况下不会执行

package com.chapter01.hanshu

object trylazy {
  def main(args: Array[String]): Unit = {
    val tre = sum(5, 6)
    //lazy不能修饰var类型变量
    lazy val res = sum(10, 20)
    println("====================")
    println("res=" + res)
  }
  def sum(n1:Int,n2:Int): Int ={
    println("sum函数已被执行 " + "n1=" + n1 + " n2=" + n2)
    return n1 + n2
  }
}

 

 需要使用lazy进行声明,不可修饰var类型变量

 

异常处理

第一种是try catch处理:

package com.chapter01.hanshu

object ExceptionDemo {
  def main(args: Array[String]): Unit = {
    try {
      var res = 10 / 0
    }catch {
      case ex: ArithmeticException=>println("捕获了除数为0的算数异常")
      case ex: Exception=>println("捕获了异常")
    }finally {
      println("scala finally")
    }
    println("继续执行")
  }
}

 

 第二种是throw处理

package com.chapter01.hanshu

object ThrowDemo {
  def main(args: Array[String]): Unit = {
    //    var res = test()
    //    println(res.toString)
    //如果希望test()后程序继续执行,还是要引入try catch
    try {
      test()
    } catch {
      case ex: Exception => println("输出异常信息:" + ex.getMessage)
      case ex: ArithmeticException => println("算数异常!")
    }
    println("继续执行")
  }

  def test(): Nothing = {
    throw new ArithmeticException("捕获No1异常!")
  }
}

 

 这里也可以看出scala中try catch处理异常使用了case进行抛出处理,case的话是按顺序执行的,因此在之后编写代码的过程中,越详细的异常处理要往前放,越笼统的往后放。

第三种是注释处理:

package com.chapter01.hanshu

object ThrowsComment {
  def main(args: Array[String]): Unit = {
    f11()
  }
  @throws(classOf[NumberFormatException])//等同于NumberFormatException.class
  def f11()={
    "abc".toInt
  }
}

 

posted @ 2021-02-14 21:21  千幽行  阅读(39)  评论(0编辑  收藏  举报