scalabook
while and try
while loops
Цикл while
имеет следующий синтаксис:
var x = 1// x: Int = 1while x < 3do println(x) x += 1// 1// 2
В Scala не приветствуется использование изменяемых переменных
var
, поэтому следует избегатьwhile
. Аналогичный результат можно достигнуть используя вспомогательный метод:
def loop(x: Int): Unit =if x < 3 thenprintln(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
этого примера.
Ссылки: