Scala - обработка исключений
Исключения Scala работают как исключения во многих других языках, таких как Java. Вместо того, чтобы возвращать значение обычным способом, метод может завершиться выдачей исключения. Однако Scala на самом деле не проверяет исключения.
Когда вы хотите обрабатывать исключения, вы используете блок try {...} catch {...}, как и в Java, за исключением того, что блок catch использует сопоставление для идентификации и обработки исключений.
Выбрасывание исключений
Вызов исключения выглядит так же, как в Java. Вы создаете объект исключения, а затем бросаете его с помощьюthrow ключевое слово следующим образом.
throw new IllegalArgumentException
Выявление исключений
Scala позволяет try/catch любое исключение в одном блоке, а затем выполнить сопоставление с ним с шаблоном, используя 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. Следующие команды используются для компиляции и выполнения этой программы.
Команда
\>scalac Demo.scala
\>scala Demo
Вывод
Missing file exception
Exiting finally...