Kotlin 如果为null,它会抛出异常吗?
我是Kotlin world的新手,不理解以下代码片段:Kotlin 如果为null,它会抛出异常吗?,kotlin,Kotlin,我是Kotlin world的新手,不理解以下代码片段: @GET @Path("/env/{id}") fun read(@PathParam("id") id: EnvStageId): Uni<Environment> = createUni(repo.read(id)).map { it ?: throw WebApplicationException(Response.status(Respon
@GET
@Path("/env/{id}")
fun read(@PathParam("id") id: EnvStageId): Uni<Environment> =
createUni(repo.read(id)).map {
it ?: throw WebApplicationException(Response.status(Response.Status.BAD_REQUEST)
.type(TEXT_PLAIN)
.entity("Environment $id does not exist")
.build())
}
@GET
@路径(“/env/{id}”)
趣味阅读(@PathParam(“id”)id:EnvStageId):Uni=
createUni(repo.read(id)).map{
it?:抛出WebApplicationException(Response.status(Response.status.BAD_请求)
.type(纯文本)
.实体(“环境$id不存在”)
.build())
}
问题是,如果
it
为null,那么它将抛出一个异常,对吗?elvis操作符?:
为非null或延续
对。如果为null,则会引发异常
问题是,有时崩溃会更好:如果该操作应该总是从本地数据库返回某些内容,那么如果失败,您会收到一个警报,提示正在发生一些非常糟糕的事情,crashalytica for prod现在是标准的
可能设计是在低级别实现上抛出异常。我不这么认为,因为这似乎是混合了网络和存储库,所以我会怀疑它。但另一方面似乎是这样,因为有人为此编写了一个特殊的异常,如果是这样,那么下一个体系结构层应该捕获这些异常并优雅地处理它们