Полагаю, вы пытаетесь написать что-то вроде
try {
110 / 13
} catch {
case a if a > 10 => 10
case b if b < 10 => 12
}
, однако это недопустимый синтаксис, поскольку выражение try имеет форму
try { b } catch h
где обработчик h
должен быть частичной функцией типа
PartialFunction[Throwable, T]
, поэтому a
в case a if a > 10
должен быть Throwable
, однако Throwable
не имеет метода >
, определенного для него.
Рассмотрим обработку ошибок monadi c с использованием Try
вместо выражения try-catch. Это позволит вам просто map
закончить в счастливом случае. Например, рассмотрим
Try(110 / 13)
.map(num => if (num > 10) 10 else 12)
.getOrElse(someDefaultValue)
Обработка ошибок без исключений содержит некоторые интерактивные упражнения, которые помогут вам начать работу с концепцией.