Учебники

Scala — обработка исключений

Исключения в Scala работают как исключения во многих других языках, таких как Java. Вместо того, чтобы возвращать значение обычным способом, метод может завершиться с помощью исключения. Однако на самом деле Scala не имеет проверенных исключений.

Когда вы хотите обработать исключения, вы используете блок try {…} catch {…}, как в Java, за исключением того, что блок catch использует сопоставление для идентификации и обработки исключений.

Бросать исключения

Бросок исключения выглядит так же, как в Java. Вы создаете объект исключения и затем бросаете его с помощью ключевого слова throw следующим образом.

throw new IllegalArgumentException

Ловить исключения

Scala позволяет вам попробовать / перехватить любое исключение в одном блоке, а затем выполнить сопоставление с ним с помощью блоков case . Попробуйте следующий пример программы для обработки исключений.

пример

import java.io.FileReader
import java.io.FileNotFoundException
import java.io.IOException

object Demo {
   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")
         }
      }
   }
}

Сохраните вышеуказанную программу в Demo.scala . Следующие команды используются для компиляции и выполнения этой программы.

команда

\>scalac Demo.scala
\>scala Demo

Выход

Missing file exception

Поведение этого выражения try-catch такое же, как и в других языках, за исключением. Тело выполняется, и если оно выдает исключение, каждое предложение catch проверяется по очереди.

Окончательный пункт

Вы можете заключить выражение в предложение finally , если хотите, чтобы какой-либо код выполнялся независимо от завершения выражения. Попробуйте следующую программу.

пример

import java.io.FileReader
import java.io.FileNotFoundException
import java.io.IOException

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

Сохраните вышеуказанную программу в Demo.scala . Следующие команды используются для компиляции и выполнения этой программы.