Я использую Scala с Play для моего микросервиса. Он имеет контроллер, который использует конструкцию Action.async с пользовательским парсером тела. Вот пример кода:Scala Play - Action.async с BodyParser - Обработка исключений
def crud(param: String) = Action.async(SomeCustomBodyParser) { implicit request =>
try {
<some code>
} catch {
case _ => <Exception Handling logic>
}
}
Проблема с этим кодом является то, что в случае исключения в SomeCustomBodyParser
, он не получает обрабатываются в блоке поймать. Я попробовал несколько подходов, где я извлекаю его на внешний вид, а затем обрабатываю его вручную, но исключение не поймано правильно. Код Action.async предполагает, что он принимает блок кода и выполняет его отдельный контекст. Я не совсем точно понимаю, как это работает.
Как я могу обработать исключение и выплюнуть лучшее сообщение об исключении.
Проблема заключается в том, что 'SomeCustomBodyParser' генерирует исключение, а try/catch не запускается вообще. Независимо от того, выполнялось ли оно асинхронно, это не имеет значения, поскольку оно не выполняется. – colinjwebb
Для записи '' '' Either''' не является монадой в scala. – rethab