Pengendalian pengecualian skala
Pengendalian pengecualian Scala adalah serupa dengan bahasa lain seperti Java.
Kaedah Scala boleh menamatkan pelaksanaan kod berkaitan dengan membuang pengecualian tanpa mengembalikan nilai.
Melempar pengecualian
Scala melontar pengecualian dengan cara yang sama seperti Java, menggunakan kaedah lontaran, contohnya, melontar pengecualian parameter baharu:
throw new IllegalArgumentException
Pengecualian tangkapan
Mekanisme penangkapan pengecualian adalah sama seperti dalam bahasa lain Jika pengecualian berlaku, klausa tangkapan ditangkap mengikut urutan. Oleh itu, dalam klausa tangkapan, pengecualian yang lebih khusus harus diletakkan dahulu, dan pengecualian yang lebih umum harus diletakkan kemudian. Jika pengecualian yang dilemparkan tiada dalam klausa tangkapan, pengecualian tidak boleh dikendalikan dan akan ditingkatkan kepada pemanggil.
Klausa tangkapan untuk menangkap pengecualian, sintaksnya tidak sama seperti dalam bahasa lain. Dalam Scala, idea pemadanan corak dipinjam untuk melakukan pemadanan pengecualian Oleh itu, dalam kod tangkapan, terdapat satu siri pernyataan kes, seperti yang ditunjukkan dalam contoh berikut:
import java.io.FileReader import java.io.FileNotFoundException import java.io.IOException object Test { def main(args: Array[String]) { try { val f = new FileReader("input.txt") } catch { case ex: FileNotFoundException =>{ println("Missing file exception") } case ex: IOException => { println("IO Exception") } } } }
Apabila kod di atas. dilaksanakan, hasil output ialah:
$ scalac Test.scala $ scala Test Missing file exception
Kandungan dalam klausa tangkapan adalah sama persis dengan kes dalam perlawanan. Memandangkan pengecualian ditangkap mengikut susunan, jika pengecualian yang paling biasa, Boleh Dibuang, ditulis di hadapan, kes yang mengikutinya tidak akan ditangkap, jadi ia perlu ditulis pada penghujungnya.
akhirnya pernyataan
akhirnya pernyataan digunakan untuk melaksanakan langkah-langkah yang perlu dilaksanakan sama ada ia adalah pemprosesan biasa atau apabila pengecualian berlaku contohnya:
import java.io.FileReader import java.io.FileNotFoundException import java.io.IOException object Test { def main(args: Array[String]) { try { val f = new FileReader("input.txt") } catch { case ex: FileNotFoundException => { println("Missing file exception") } case ex: IOException => { println("IO Exception") } } finally { println("Exiting finally...") } } }
Laksanakan kod di atas , hasil output ialah:
$ scalac Test.scala $ scala Test Missing file exception Exiting finally...