У меня есть контроллер, который предоставляет метод в качестве маршрута. В этом методе я называю длительное вычисление, которое возвращает Future [SomeType].Play Framework 2.3 Обработка Будущее в контроллерах
теперь у меня есть следующие:
def compute(id: String) = Action.async { request =>
val result: Future[SomeType] = compute(id)
result.map(value => Ok(transform(value, id)))
}
До сих пор это просто счастливый путь. Что делать, если вычисление (id) приводит к ошибке? Как с этим справиться? Я мог бы обернуть все это в блок Try, но есть ли лучшая альтернатива? Какие-либо предложения?
По умолчанию неудавшееся будущее приведет к ответу на ошибку сервера. Вы можете '.recover' или' .recoverWith' отступать от такого отказа до пользовательского ответа. – cchantep