Scala 中的 try...catch
Mohammad Irfan
2023年1月30日
2022年5月18日
-
没有
Try-Catch
块的 Scala 代码 -
在 Scala 中使用
Try-Catch
块来封装可疑代码并处理异常 -
使用
Try-Catch
和Finally
块在 Scala 的主体内执行代码
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-Catch
和 Finally
块在 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...