Spark記錄-Scala異常與處理


Scala try-catch語句

Scala提供trycatch塊來處理異常。try塊用於包含可疑代碼。catch塊用於處理try塊中發生的異常。可以根據需要在程序中有任意數量的try...catch塊。

Scala try catch示例1

在下面的程序中,我們將可疑代碼封裝在try塊中。 在try塊之后使用了一個catch處理程序來捕獲異常。如果發生任何異常,catch處理程序將處理它,程序將不會異常終止。

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

將上面代碼保存到源文件:Demo.scala中,使用以下命令編譯並執行代碼 -

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... 
Shell

Scala Try Catch示例2

在這個例子中,catch處理程序有兩種情況。 第一種情況將只處理算術類型異常。 第二種情況有Throwable類,它是異常層次結構中的超類。第二種情況可以處理任何類型的異常在程序代碼中。有時當不知道異常的類型時,可以使用超類 - 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) } } 
Scala

將上面代碼保存到源文件:Demo.scala中,使用以下命令編譯並執行代碼 -

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...

Scala finally塊

inally塊用於在異常時釋放資源。資源可能是文件,網絡連接,數據庫連接等,finally塊執行代碼運行保證。以下程序說明了finally塊的用法。

Scala finally塊示例

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: Exception =>println(ex) case th: Throwable=>println("found a unknown exception"+th) } finally{ println("Finaly block always executes") } println("Rest of the code is executing...") } } object Demo{ def main(args:Array[String]){ var e = new ExceptionExample() e.divide(100,10) } } 
Scala

將上面代碼保存到源文件:Demo.scala中,使用以下命令編譯並執行代碼 -

D:\software\scala-2.12.3\bin>scalac Demo.scala D:\software\scala-2.12.3\bin>scala Demo.scal java.lang.ArrayIndexOutOfBoundsException: 10 Finally block always executes Rest of the code is executing...

Scala throw關鍵字

可以在代碼中明確地拋出異常。Scala提供throw關鍵字來拋出異常。 throw關鍵字主要用於拋出自定義異常。下面給出了使用scala throw異常關鍵字的例子。

Scala Throw示例

class ExceptionExample2{ def validate(age:Int)={ if(age<18) throw new ArithmeticException("You are not eligible") else println("You are eligible") } } object MainObject{ def main(args:Array[String]){ var e = new ExceptionExample2() e.validate(10) } }

Scala throws關鍵字

Scala提供了throws關鍵字來聲明異常。可以使用方法定義聲明異常。 它向調用者函數提供了此方法可能引發此異常的信息。 它有助於調用函數處理並將該代碼包含在try-catch塊中,以避免程序異常終止。在scala中,可以使用throws關鍵字或throws注釋來聲明異常。

Scala Throws示例

class ExceptionExample4{ @throws(classOf[NumberFormatException]) def validate()={ "abc".toInt } } object Demo{ def main(args:Array[String]){ var e = new ExceptionExample4() try{ e.validate() }catch{ case ex : NumberFormatException => println("Exception handeled here") } println("Rest of the code executing...") } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM