while and try
while loops
Цикл while
имеет следующий синтаксис:
var x = 1
// x: Int = 1
while
x < 3
do
println(x)
x += 1
// 1
// 2
В Scala не приветствуется использование изменяемых переменных
var
, поэтому следует избегатьwhile
. Аналогичный результат можно достигнуть используя вспомогательный метод:def loop(x: Int): Unit = if x < 3 then println(x) loop(x + 1) loop(1)
try/catch/finally
Как и в Java, в Scala есть конструкция try
/catch
/finally
, позволяющая перехватывать исключения и управлять ими.
Для обеспечения согласованности Scala использует тот же синтаксис, что и выражения match
,
и поддерживает pattern matching для различных возможных исключений.
В следующем примере openAndReadAFile
- это метод, который выполняет то, что следует из его названия:
он открывает файл и считывает текст в нем, присваивая результат изменяемой переменной text
:
var text = ""
try
text = openAndReadAFile(filename)
catch
case fnf: FileNotFoundException => fnf.printStackTrace()
case ioe: IOException => ioe.printStackTrace()
finally
println("Здесь необходимо закрыть ресурсы.")
Предполагая, что метод openAndReadAFile
использует Java java.io.*
классы для чтения файла
и не перехватывает его исключения, попытка открыть и прочитать файл может привести как к FileNotFoundException
,
так и к IOException
, и эти два исключения перехватываются в блоке catch
этого примера.
Ссылки: