Мне нужно инициализировать набор vals, где код для инициализации может вызвать исключение. Я хотел бы написать:
try {
val x = ... generate x value ...
val y = ... generate y value ...
} catch { ... exception handling ... }
... use x and y ...
Но это (очевидно) не работает, потому что x и y не входят в объем вне try.
Легко решить проблему с помощью изменяемых переменных:
var x: Whatever = _
var y: Whatever = _
try {
x = ... generate x value ...
y = ... generate y value ...
} catch { ... exception handling ... }
... use x and y ...
Но это не совсем так приятно.
Также легко решить проблему путем дублирования обработки исключений:
val x = try { ... generate x value ... } catch { ... exception handling ... }
val y = try { ... generate y value ... } catch { ... exception handling ... }
... use x and y ...
Но это связано с дублированием обработки исключений.
Должен быть "хороший" способ, но он ускользает от меня.