Throws所在位置是kotlin.Throws,其相关用法介绍如下。

用法:

@Target([AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.CONSTRUCTOR]) annotation class Throws
typealias Throws = Throws
@Target([AnnotationTarget.FUNCTION, AnnotationTarget.CONSTRUCTOR]) annotation class Throws
对于 JVM

此注解指示在编译为 JVM 方法时函数应声明哪些异常。

例子:

@Throws(IOException::class)
fun readFile(name: String): String {...}

将被翻译成

String readFile(String name) throws IOException {...}
常见的

此注解指示当编译为 Kotlin/JVM 和 Kotlin/Native 中的平台方法时,函数应声明哪些异常。

对于原生

此注解指示函数在编译为平台方法时应声明哪些异常。

编译到Objective-C/Swift 框架时,具有或继承此注释的非suspend 函数在Objective-C 中表示为NSError* 生成方法,在Swift 中表示为throws 方法。 suspend 函数的表示在完成处理程序中始终具有 NSError* /Error 参数

当从 Swift/Objective-C 代码调用的 Kotlin 函数引发异常时,该异常是 exceptionClasses 或其子类之一的实例,它会作为 NSError 传播。其他到达 Swift/Objective-C 的 Kotlin 异常被视为未处理并导致程序终止。

注意:没有 @Throwssuspend 函数仅将 kotlin.coroutines.cancellation.CancellationException 传播为 NSError 。没有 @Throws 的非 suspend 函数根本不会传播 Kotlin 异常。