В Scala (или практически любом скомпилированном языке программирования на самом деле) проверка, объявлена ли переменная или нет, является задачей компилятора, выполняемой во время компиляции.Если вы попытаетесь использовать переменную, которая не была объявлена, компилятор выдаст ошибку, и ваш код не сможет работать.
Исключения - это способ представления проблем во время выполнения.
Нет перекрытия между "временем компиляции" и "временем выполнения", поэтому то, что вы пытаетесь сделать, не делаетимеет смысл. Просто не исключение для "переменная не существует", и поэтому вы не можете ее перехватить.
Для сравнения, возьмите этот пример:
val map = Map('a' -> 1, 'b' -> 2)
map('c') // will throw NoSuchElementException because there is no 'c' in the map
В этом случае map.apply('c')
(синтаксический сахар для apply
позволяет вам map('c')
сгенерирует исключение, потому что именно так реализован метод применения Map. См. определение Map#apply
, который вызывает Map # default , если ключ отсутствует на карте; Map#default
выдает исключение NoSuchElementException.
Вы можете перехватить это исключение с помощью try / catch,например,
try {
map('c')
} catch {
case e: NoSuchElementException =>
println("got it!")
}