Scala提供try
和catch
塊來處理異常。try
塊用于包含可疑代碼。catch
塊用于處理try
塊中發(fā)生的異常??梢愿鶕?jù)需要在程序中有任意數(shù)量的try...catch
塊。
Scala try catch示例1
在下面的程序中,我們將可疑代碼封裝在try
塊中。 在try
塊之后使用了一個(gè)catch
處理程序來捕獲異常。如果發(fā)生任何異常,catch
處理程序?qū)⑻幚硭绦驅(qū)⒉粫?huì)異常終止。
class ExceptionExample{
def divide(a:Int, b:Int) = {
try{
a/b
}catch{
case e: ArithmeticException => println(e)
}
println("Rest of the code is executing...")
}
}
object Demo{
def main(args:Array[String]){
var e = new ExceptionExample()
e.divide(100,0)
}
}
將上面代碼保存到源文件:Demo.scala中,使用以下命令編譯并執(zhí)行代碼 -
D:\software\scala-2.12.3\bin>scalac Demo.scala
D:\software\scala-2.12.3\bin>scala Demo.scal
java.lang.ArithmeticException: / by zero
Rest of the code is executing...
Scala Try Catch示例2
在這個(gè)例子中,catch
處理程序有兩種情況。 第一種情況將只處理算術(shù)類型異常。 第二種情況有Throwable
類,它是異常層次結(jié)構(gòu)中的超類。第二種情況可以處理任何類型的異常在程序代碼中。有時(shí)當(dāng)不知道異常的類型時(shí),可以使用超類 - Throwable
類。
class ExceptionExample{
def divide(a:Int, b:Int) = {
try{
a/b
var arr = Array(1,2)
arr(10)
}catch{
case e: ArithmeticException => println(e)
case ex: Throwable =>println("found a unknown exception"+ ex)
}
println("Rest of the code is executing...")
}
}
object Demo{
def main(args:Array[String]){
var e = new ExceptionExample()
e.divide(100,10)
}
}
將上面代碼保存到源文件:Demo.scala中,使用以下命令編譯并執(zhí)行代碼 -
D:\software\scala-2.12.3\bin>scalac Demo.scala
D:\software\scala-2.12.3\bin>scala Demo.scal
found a unknown exceptionjava.lang.ArrayIndexOutOfBoundsException: 10
Rest of the code is executing...