Throws
@Target
(
[AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.CONSTRUCTOR]
)
annotation
class
Throws
(source)
@Target
(
[AnnotationTarget.FUNCTION, AnnotationTarget.CONSTRUCTOR]
)
annotation
class
Throws
(source)
For JVM
This annotation indicates what exceptions should be declared by a function when compiled to a JVM method.
Example:
@Throws(IOException::class)
fun readFile(name: String): String {...}
will be translated to
String readFile(String name) throws IOException {...}
For Common
This annotation indicates what exceptions should be declared by a function when compiled to a platform method in Kotlin/JVM and Kotlin/Native.
For Native
This annotation indicates what exceptions should be declared by a function when compiled to a platform method.
When compiling to Objective-C/Swift framework, non-
suspend
functions having or inheriting
this annotation are represented as
NSError*
-producing methods in Objective-C
and as
throws
methods in Swift. Representations for
suspend
functions always have
NSError*
/
Error
parameter in completion handler
When Kotlin function called from Swift/Objective-C code throws an exception
which is an instance of one of the
exceptionClasses
or their subclasses,
it is propagated as
NSError
. Other Kotlin exceptions reaching Swift/Objective-C
are considered unhandled and cause program termination.
Note:
suspend
functions without
@Throws
propagate only
kotlin.coroutines.cancellation.CancellationException
as
NSError
.
Non-
suspend
functions without
@Throws
don't propagate Kotlin exceptions at all.