Scala Gestion des exceptions
la gestion des exceptions Scala et d'autres langues similaires, tels que Java.
La méthode de Scala peut lancer une exception au moyen d'une méthode pour mettre fin le code correspondant, sans passer par la valeur de retour.
Jeter une exception
méthodes Scala et Java lèvent des exceptions, l'utilisation de méthodes de jet, par exemple, lancer un nouveau paramètres d'exception:
throw new IllegalArgumentException
Attrapez l'exception
mécanisme de capture anormale avec d'autres langues, si une exception se produit, les mots de capture sont séquentiellement capturé. Ainsi, selon les termes de la capture, l'exception plus spécifique de compter plus avant et après les anomalies les plus courantes plus fiables. Si une exception ne capture pas les mots, l'exception ne sera pas traitée et sera mis à jour à l'appelé.
clause catch Catch d'exception, la grammaire et d'autres langues ne sont pas les mêmes. En Scala, les idées empruntées font pattern matching pour correspondre à une exception, de sorte que le code catch, le cas est une série de mots, comme dans cet exemple:
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") } } } }
Mise en œuvre du code ci-dessus, la sortie est:
$ scalac Test.scala $ scala Test Missing file exception
catch phrase dans le contenu avec le match dans le cas est exactement le même. Parce que la gestion des exceptions est dans l'ordre, si l'anomalie la plus commune, Throwable, écrite à l'avant, à l'arrière de l'affaire qui ne sont pas attraper, si vous avez besoin de l'écrire dernier.
finally
finally est utilisé pour exécuter un traitement normal ou les étapes doivent être effectuées lorsqu'une exception se produit, les exemples sont les suivants:
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...") } } }
Mise en œuvre du code ci-dessus, la sortie est:
$ scalac Test.scala $ scala Test Missing file exception Exiting finally...