В предстоящем scala 2.8 добавлен пакет util.control
, который включает в себя библиотеку break и конструкцию для обработки исключений, чтобы код выглядел следующим образом:
type NFE = NumberFormatException
val arg = "1"
val maybeInt = try { Some(arg.toInt) } catch { case e: NFE => None }
Может быть заменен кодом вроде:
import util.control.Exception._
val maybeInt = catching(classOf[NFE]) opt arg.toInt
Мой вопрос - почему? Что это добавляет к языку, кроме предоставления другого (и радикально другого) способа выразить одно и то же? Есть ли что-нибудь, что можно выразить с помощью нового элемента управления, но не через try-catch
? Это DSL, который должен делать обработку исключений в scala похожим на какой-то другой язык (и если да, какой)?