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
的用途,可以获取您的实体,如果找不到则抛出异常。
在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
的用途,可以获取您的实体,如果找不到则抛出异常。