我是科特林世界的新手。所以我有一些问题。我正在使用 ktor 框架并尝试使用 ktor-locations ( https://ktor.io/servers/features/locations.html#route-classes ) 作为示例
@Location("/show/{id}")
data class Show(val id: Int)
routing {
get<Show> { show ->
call.respondText(show.id)
}
}
一切都很好,当我尝试获取/show/1
但如果路线/show/test
存在NumberFormatException
,则DefaultConversionService
尝试将 id 转换为 Int 并且无法做到。所以我的问题是,我怎样才能捕捉到这个异常并返回带有一些错误数据的 Json。例如,如果不使用位置,我可以像这样执行 smt
routing {
get("/{id}") {
val id = call.parameters["id"]!!.toIntOrNull()
call.respond(when (id) {
null -> JsonResponse.failure(HttpStatusCode.BadRequest.value, "wrong id parameter")
else -> JsonResponse.success(id)
})
}
}
谢谢帮助!