Micronaut 中的异常处理

Exception handling in Micronaut

在micronaut中有没有办法抛出一个异常,指定响应的错误代码,就像我们在springboot中可以做的一样:

throw new ResponseStatusException(HttpStatus.FORBIDDEN)

还是我们总是必须实现自己的异常处理程序?

我宁愿不必为了能够 return 400 或 403 响应而实施异常处理程序。

我要的class是:

io.micronaut.http.exceptions.HttpStatusException

一开始没找到是因为缺少依赖:

implementation("io.micronaut:micronaut-http")

我正在使用它成功地 return 一个 404 错误,在这个例子中有一条消息:

fun findById(id: Long): User {
    val user = userRepository.findById(id)
    return if (user.isPresent()) user.get() else throw HttpStatusException(HttpStatus.NOT_FOUND, "User not found")
}

如果这是不错的 kotlin 代码,请随时发表评论。我是 kotlin 的新手,来自 java 和 scala 背景。我觉得不错 xD

只有一个技巧,如果您想避免 return 语句,您可以更新您的方法以使用“kotlin 全权”

像这样:

fun findById(id: Long): User = 
    userRepository.findById(id)
        ?.let { it.orElseThrow(HttpStatusException(HttpStatus.NOT_FOUND, "User not found"))}

这是 安全调用运算符 和转换方法 let 的用途,可以获取您的实体,如果找不到则抛出异常。