我在 Java 上编写了控制器,并且非常喜欢我可以在控制器中看到前端成功和失败的答案,并且
@ExceptionHandler
@GetMapping("/names")
public List<MyObj> getMyObj(
@RequestParam Integer page,
@RequestParam Integer countPerPage
) throws SomethingWrongException, OtherWrongExceptions {
return service.getInfo(page, countPerPage);
}
但在 Kotlin 中没有
throws
,所以我现在只能看到状态“ok”的信息。
这种情况有没有最佳实践(除了手工记录)?
我了解
kotlin.Result
,但它不允许查看错误类型,并且 @Throws
太多取决于开发人员。
Kotlin 没有检查异常(有关详细信息,请参阅:https://kotlinlang.org/docs/exceptions.html)并且(据我所知)也没有提供重新引入它们的方法。您还会发现越来越多的 java 框架和组件使用未经检查的异常(例如
Jakarta.validation
或 Spring Boot 6 异常)。
在您的具体示例(在控制器级别)中,在 java 中使用检查异常无论如何不会产生任何编译时影响,因此开发人员仍然可以决定不注册异常处理程序。
我的建议是尝试适应 Spring 的异常处理,例如通过创建
ErrorResponseException
(或继承它)。 Spring 的 ResponseEntityExceptionHandler
将为您完成剩下的工作 - 或者编写您自己的 ControllerAdvice
(https://reflectoring.io/spring-boot-exception-handling/#controlleradvice)