Ищете элегантный способ получить один doSomething() запасной вариант в случае, подобном:
doSomething()
if(boolean) { Try(canFailingMethod()) match { case Success() => _ case Failure() => doSomething() } } else { doSomething() }
Если вас не интересует сбой, это может сработать:
Try { require(boolean) something() }.getOrElse(doSomething())
Как насчет такого:
def attemptWithFallback(flag: Boolean)(work: => Unit)(fallback: => Unit): Unit = { Try(()).filter(_ => flag).flatMap(_ => Try(work)).getOrElse(fallback) }