首页 > 其他分享 >无涯教程-Scala - 异常处理

无涯教程-Scala - 异常处理

时间:2024-01-26 17:32:13浏览次数:31  
标签:教程 java scala Demo Scala 无涯 catch import 异常

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

将上述程序保存在 Demo.scala 中。以下命令用于编译和执行该程序。

\>scalac Demo.scala
\>scala Demo
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...")
      }
   }
}

将上述程序保存在 Demo.scala 中。以下命令用于编译和执行该程序。

\>scalac Demo.scala
\>scala Demo
Missing file exception
Exiting finally...

参考链接

https://www.learnfk.com/scala/scala-exception-handling.html

标签:教程,java,scala,Demo,Scala,无涯,catch,import,异常
From: https://blog.51cto.com/u_14033984/9436834

相关文章

  • 幻兽帕鲁服务器一键搭建教程
    最近缝合怪游戏《幻兽帕鲁(Palworld)》Steam在线峰值破百万,成为Steam史上同时在线玩家数最多的付费游戏。服务器于1月21日再次出现宕机情况,很多玩家选择自建游戏服务器。幻兽帕鲁是Pocketpair开发的一款开放世界生存制作游戏,游戏于2024年1月18日发行抢先体验版本。游戏中,玩家......
  • 无涯教程-Scala - 正则表达式
    本章介绍Scala如何通过scala.util.matching包中提供的Regex类支持正则表达式。尝试下面的示例程序,我们将尝试从语句中找出单词Scala。importscala.util.matching.RegexobjectDemo{defmain(args:Array[String]){valpattern="Scala".rvalstr="Sc......
  • Adobe Photoshop 2023激活教程(亲测有效)
    Photoshop软件具有直观易用的用户界面,各种图像编辑和处理工具,各种图层和蒙版功能,各种滤镜和插件。是一个非常强大的数字图像处理和编辑软件。无论是初学者还是有经验的设计师都可以使用该软件轻松地处理、修改和创建各种类型的图像,以满足不同领域的需求。安装步骤:https://kdocs.c......
  • 幻兽帕鲁有多火?!腾讯云联机服务器卖爆啦!4核16G官方推荐,限时特惠(内含教程)
    腾讯云4核16G仅需66元/月,适合用来搭建幻兽帕鲁服务器,支持32人专用服务器要自建幻兽帕鲁(Palworld)的服务器,可以采取以下步骤:获取服务器软件:首先,您需要在Steam库中搜索"PalworldDedicatedServer",或者在"工具"选项中选择进行搜索以找到该软件。下载并安装服务器软件:找到并下载所......
  • 无涯教程-Scala - 模式匹配
    在函数值和闭包之后,模式匹配是Scala第二广泛使用的函数,Scala在处理消息时为模式匹配提供了强大的支持。Pattern-示例objectDemo{defmain(args:Array[String]){println(matchTest(3))}defmatchTest(x:Int):String=xmatch{case1=>......
  • Vue2.0新手教程:如何轻松实现数字输入框指令?
    前言前端项目中,输入框是常见的,数字输入框更是常见,我们也许用惯了UI框架或是第三方提供的数字输入框,其实我们内心也想拥有自己的一个数字输入框指令,进可以攻(灵活使用),退可以守(灵活扩展),一切尽在掌握之中,不尽于被动。需求最近用到了数字输入框,需求需要满足:设置输入的小数位数设置是......
  • 无涯教程-Scala - 特性(Traits)
    Traits封装了方法和字段定义,然后可以通过混合到类中来重用它们。与类继承不同,一个类可以混合任意数量的traits。traits定义看起来类似于类定义,只是它使用关键字trait。以下是trait的基本示例语法。Traits-语法traitEqual{defisEqual(x:Any):BooleandefisNot......
  • 无涯教程-Scala - 数组(Arrays)
    Scala提供了一种数据结构数组,它存储了相同类型元素的固定大小的顺序集合。声明数组要在程序中使用数组,必须声明一个变量以引用该数组,并且必须指定该变量可以引用的数组的类型。varz:Array[String]=newArray[String](3)orvarz=newArray[String](3)在此,z被声明为可容......
  • 无涯教程-Scala - 闭包
    closure闭包是一个函数,其返回值取决于在此函数外部声明的一个或多个变量的值。以下带有匿名函数的代码。valmultiplier=(i:Int)=>i*10这里,函数体中使用的唯一变量i*10是i,它被定义为函数的参数,尝试以下代码-valmultiplier=(i:Int)=>i*factor乘数中有两个自由变......
  • PyCharm安装教程,图文教程(超详细)
    原文链接:https://blog.csdn.net/wangyuxiang946/article/details/130634049一、PyCharm下载安装1)访问官网https://www.jetbrains.com/pycharm/download/#section=windows下载「社区版Community」安装包。  2)下载完成后,「双击」运行安装包,开始安装。  3)设置界面,点......