zoukankan      html  css  js  c++  java
  • 7-4 内建的控制结构

    1.抛出异常的表达式的类型为Nothing,Int可以兼容Nothing。

    def method1(n: Int): Unit ={
      val half: Int = if (n % 2 == 0) n / 2 else throw new RuntimeException("n must be even")
    }
    

    2.try-catch-finally的基本语法,异常处理需要配合模式匹配(pattern matching)使用

    def main(args: Array[String]): Unit = {
      
      val fileReader: FileReader = new FileReader("input.txt")
      try {
        //处理文件内容
      }catch {
        case ex: FileNotFoundException => //处理找不到文件的情况
        case ex: IOException => //处理其他IO错误
      }finally {
        fileReader.close
      }
    }
    

    3.返回值

    ①正常情况下,如果没有异常抛出,整个表达式的结果就是try子句的结果;如果有异常抛出并且被捕获时,整个表达式的结果就是对应的catch子句的结果;而如果有异常抛出并且没有被捕获,整个表达式就没有结果。如果有finally子句,该子句计算出来的值会被丢弃(即finally子句不返回值)。

    //返回1
    def g(): Int = try 1 finally 2
    

    ②跟Java一样,当finally子句包含一个显式的返回语句(即return),或者抛出某个异常,那么这个返回值或异常将会“改写”(overrule)任何之前的try代码块或某个catch子句中产生的值。

    //返回2
    def f(): Int = try return 1 finally return 2
    

      

  • 相关阅读:
    题解CF566D Restructuring Company
    题解CF986F Oppa Funcan Style Remastered
    题解P2371 [国家集训队]墨墨的等式
    题解 CF1203D2 Remove the Substring (hard version)
    题解 CF1202D Print a 1337-string...
    ubuntu apt-get install php
    jwt refresh token
    读过的laravel文章
    delete all untracked files
    自定义UserProvider,更改验证方法
  • 原文地址:https://www.cnblogs.com/noyouth/p/14019306.html
Copyright © 2011-2022 走看看