Вы можете сделать простое try-catch
, чтобы поймать исключение при разборе, которое выдается, когда строка не может быть преобразована в целое число.
routing {
get("/{id}") {
val id = try {
call.parameters["id"]?.toInt()
} catch (e : NumberFormatException) {
null
}
call.respond(when (id) {
null -> HttpStatusCode.BadRequest
else -> "The value of the id is $id"
})
}
}
Другим способом обработки исключения является использование *Модуль 1005 *:
install(StatusPages) {
// catch NumberFormatException and send back HTTP code 400
exception<NumberFormatException> { cause ->
call.respond(HttpStatusCode.BadRequest)
}
}
Это должно работать с использованием функции Location
.Обратите внимание, что Location
является экспериментальной версией ktor версии 1.0.