【问题标题】:What is the way to throw a parametrized exception in kotlin?在 kotlin 中抛出参数化异常的方法是什么?
【发布时间】: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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 2014-01-25
    • 2016-04-28
    • 2021-03-04
    相关资源
    最近更新 更多