gpt4 book ai didi

generics - 具有高阶功能的异常处理/抑制

转载 作者:行者123 更新时间:2023-12-02 13:08:46 27 4
gpt4 key购买 nike

我在微服务架构中有一个应用程序。该应用程序从不同的源获取数据,并且从其他各种应用程序获得许多不同的错误响应。某些异常(例如404-Not Found异常)可以引发并返回给最终用户,但其他异常(错误请求,++)不能并且需要通过抛出其他异常来抑制。

但是,我知道这可以通过try-catch记录异常并调节引发该问题的方式来解决,但这会涉及很多代码。有时我想接受4-5个不同的异常,而其他时候只接受1-2个异常(exception)。

无论如何..我需要一些帮助使功能更高级。我想要一个将一个或多个“可接受的异常”作为参数(它们是Runtime-exceptions)并仅将批准的异常抛出try-catch的函数。

这是我尝试过的,但是似乎语法(伪代码atm。)没有正确的语法。任何帮助都非常感谢。

  fun getData() {
return supressExceptions(
NotFoundException::class.java,
ForbiddenException::class.java,
AuthorizationException::class.java) {
service.getData()
}
}

private inline fun <T, X : RuntimeException> supressExceptions(vararg approvedException: Class<X>, block: () -> T): T =
try {
block()
} catch (ex: Exception) {
// Loop through the approved exceptions.
// Throw the approved exception
throw ex
// ELSE: do something else if the exception is not approved.
}

最佳答案

以下是您要找的东西吗?

private inline fun <T> supressExceptions(vararg approvedException: Class<out RuntimeException>, block: () -> T): T =
try {
block()
} catch (ex: Exception) {
if (approvedException.contains(ex::class.java)) {
// Approved exception
throw ex
}
// ELSE: do something else if the exception is not approved.
else throw Exception("Something else")
}

关于generics - 具有高阶功能的异常处理/抑制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54321577/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com