Вы можете определить пользовательский BodyParser
, который обрабатывает (специфицирует c?) Исключения при разборе тела запроса:
val exceptionalJsonParser = BodyParser { h =>
try {
parse.tolerantJson(h) // <- call your normal parser here
} catch {
// catching all non-fatal exceptions here might not be a good idea,
// be more specific !
case NonFatal(e) => Accumulator.done(Left(BadRequest(e.getMessage)))
}
}
def action = Action.async(exceptionalJsonParser) {
...
}