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 異常。