Scala 中的 try...catch
Mohammad Irfan
2023年1月30日
-
沒有
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...