Latest web development tutorials

Scala Obsługa wyjątków

obsługa wyjątków Scala i innych podobnych języków takich jak Java.

Metoda Scala może rzucić wyjątek w drodze sposobu wypowiedzenia odpowiedni kod, bez przechodzenia przez wartości zwracanej.


Wyjątek

Metody Scala i Java generują wyjątki, stosowanie metod rzucać, na przykład rzucić nowe parametry wyjątek:

throw new IllegalArgumentException

Złapać wyjątek

Nieprawidłowy mechanizm przechwytywania z innymi językami, jeśli wystąpi wyjątek, złapać słowa są sekwencyjnie niewoli. Tak więc, zgodnie ze słowami połowu, tym bardziej specyficzny wyjątek bardziej polegać przed i po bardziej powszechne zaburzenia bardziej wiarygodne. Jeśli wyjątek nie złapać słowa, wyjątek nie będą rozpatrywane i zostaną przeniesieni do odbierającym.

Wyjątkiem Złap klauzula catch, gramatyki i inne języki nie są takie same. W Scala, pożyczone pomysły zrobić wzór pasujący dopasować wyjątek, więc kodzie połowu, sprawa jest szereg słów, jak w poniższym przykładzie:

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

Realizacja powyższego kodu, wyjście jest:

$ scalac Test.scala 
$ scala Test
Missing file exception

Zwrot catch w treści z meczu w przypadku jest dokładnie taka sama. Ponieważ obsługa wyjątków jest w kolejności, jeśli Najczęstszą nieprawidłowością, Throwable, napisany z przodu, z tyłu obudowy, które nie są złapać, więc trzeba napisać to ostatnie.


finally

Wreszcie instrukcja jest używana do wykonania zarówno normalne przetwarzanie lub etapy muszą być wykonywane, gdy wystąpi wyjątek przykłady są następujące:

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...")
      }
   }
}

Realizacja powyższego kodu, wyjście jest:

$ scalac Test.scala 
$ scala Test
Missing file exception
Exiting finally...