You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin中声明参数传递的函数可抛出异常?

Kotlin函数类型参数的异常声明方法

问题场景

需要为invoke函数中作为参数传递的convertorCall函数声明可抛出异常,初始代码如下:

suspend operator fun <T> invoke(
    convertorCall: () -> T
): T?

若为类方法声明异常,可直接使用@Throws注解:

@Throws(JsonSyntaxException::class)
suspend fun <T> convertorCall(): T

但尝试直接给函数参数添加@Throws注解时,出现语法错误:

该注解不适用于“值参数”目标

解决方案

Kotlin中需直接在函数类型定义内声明异常,而非给参数本身加注解。将函数类型从() -> T修改为() -> T @Throws(JsonSyntaxException::class)即可,完整代码如下:

suspend operator fun <T> invoke(
    convertorCall: () -> T @Throws(JsonSyntaxException::class)
): T?

说明

  • 这种写法明确告知编译器:传入的convertorCall函数允许抛出JsonSyntaxException
  • 调用invoke时,传入的lambda或函数引用若抛出该异常,编译器会正常识别其合法性

内容的提问来源于stack exchange,提问作者Pierre Vieira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 11:24:11