迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

Scala 中的 try...catch

作者:迹忆客 最近更新:2023/03/24 浏览次数:

try-catch 块是 Scala 中用于异常处理的基本处理程序块。

exception 是一种异常情况或代码流,会导致共同决定并以意外输出停止。

try 块用于封装可疑代码,catch 用于处理异常并提供必要的调试细节。


没有 Try-Catch 块的 Scala 代码

在这种情况下,我们不使用 try-catch 块并查看如果我们的代码执行失败会发生什么。

class MyClass{
    def divide(a:Int, b:Int) = {
            a/b             // Exception occurred here
        println("Code is executing...")
    }
}
object MainObject{
    def main(args:Array[String]){
        var e = new MyClass()
        e.divide(100,0)
    }
}

输出:

java.lang.ArithmeticException: / by zero
	at MyClass.divide(jdoodle.scala:4)

在这里,用户提供了错误的输入,除以零编译器意外停止执行。


在 Scala 中使用 Try-Catch 块来封装可疑代码并处理异常

在这里,我们将可疑代码包含在 try 块中,并提供 catch 处理程序的必要信息。

如果发生任何异常,则 catch 处理程序的代码将仅执行。否则,代码通常会以所需的结果执行。

class MyClass{
    def divide(a:Int, b:Int) = {
            try{
            a/b
        }catch{
            case e: ArithmeticException => println(e)
        }
        println("Code is executing...")
    }
}
object MainObject{
    def main(args:Array[String]){
        var e = new MyClass()
        e.divide(10,0)
    }
}

输出:

java.lang.ArithmeticException: / by zero
Code is executing...

使用 Try-CatchFinally 块在 Scala 的主体内执行代码

无论代码中发生什么异常,finally 块都会在其主体内执行代码。

它保证在所有情况下都可以执行代码,除非是灾难性的更改。

class MyClass{
    def divide(a:Int, b:Int) = {
            try{
            a/b
        }catch{
            case e: ArithmeticException => println(e)
        }finally{
            println("Finaly block always executes")
        }
        println("Code is executing...")
    }
}
object MainObject{
    def main(args:Array[String]){
        var e = new MyClass()
        e.divide(10,0)
    }
}

输出:

java.lang.ArithmeticException: / by zero
Finaly block always executes
Code is executing...

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便