首页 > 解决方案 > 在 kotlin 中抛出参数化异常的方法是什么?

问题描述

我有两个函数调用带有 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)
    }
}

我需要参数化所需的异常。如何重构此功能?

标签: kotlin

解决方案


我不确定你所说的参数化是什么意思

但是,如果您正在寻找一种方法来指示该函数将抛出什么异常,类似于throwsJava 中的工作方式 - 您可以在 kotlin 中使用 @Throws 注释

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.jvm/-throws/


推荐阅读