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