【发布时间】:2021-09-27 15:06:25
【问题描述】:
我有两个函数调用带有 try-catch 的代码块,例如:
fun <R: Any> executeRestCall(
block: () -> R
): R {
try {
return block()
} catch (ex: RestClientException) {
throw IllegalArgumentException(ex.message)
}
}
fun <R: Any> executeProcessCall(
block: () -> R
): R {
try {
return block()
} catch (ex: RuntimeException) {
throw IllegalStateException(ex.message)
}
}
我需要参数化所需的异常。这个函数怎么重构?
【问题讨论】:
-
这些方法有什么好处?你最终要做的就是擦除堆栈跟踪
-
即使忽略隐藏堆栈跟踪的缺点,在这里提取任何东西到底有什么好处?看起来生成的函数只是重新发明了
try-catch块 -
那么this 会回答你的问题吗?
-
只调用
block()而不使用这些方法,然后删除这些方法:D
标签: kotlin