0% found this document useful (0 votes)
4 views9 pages

Kotlin Exception Handling Guide

The document discusses the use of exceptions in Kotlin, highlighting their purpose in error handling and the importance of separating error-handling code from regular code. It provides examples of how to throw and catch exceptions, as well as best practices for using exceptions effectively. Additionally, it emphasizes that exceptions should not be used for control flow or manageable errors.

Uploaded by

Triveni Patle
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views9 pages

Kotlin Exception Handling Guide

The document discusses the use of exceptions in Kotlin, highlighting their purpose in error handling and the importance of separating error-handling code from regular code. It provides examples of how to throw and catch exceptions, as well as best practices for using exceptions effectively. Additionally, it emphasizes that exceptions should not be used for control flow or manageable errors.

Uploaded by

Triveni Patle
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Kotlin

Exceptions

@kotlin | Developed by JetBrains


What? Why?
An exception signals that something went exceptionally wrong.
● Development mistakes
● Errors produced by external (to the program) resources
● System errors

Why use exceptions:


● To separate error-handling code from regular code
● To propagate errors up the call stack – maybe someone knows how to deal with the error
● To group and differentiate error types

Do NOT use exceptions for:


● Control flow
● Manageable errors
How?
fun main() {
throw Exception("Hello, world!")
}

Or even better:
fun main() {
val nullableString: String? = null
println("Hello, NPE! ${nullableString/!}")
}
Exception in thread "main" [Link]
Example
fun main() {
try {
throw Exception("An exception", RuntimeException("A cause"))
} catch (e: Exception) {
println("Message: ${[Link]}")
println("Cause: ${[Link]}")
println("Exception: $e") // toString() is called "under the hood"
[Link]()
} finally {
Message: An exception
println("Finally always executes") Cause: [Link]: A cause
Exception: [Link]: An exception
} Finally always executes
[Link]: An exception
} at [Link]([Link])
at [Link]([Link])
Caused by: [Link]: A cause
//. 2 more
Another meaningful example

data class Person(val name: String, val surname: String, val age: Int) {
init {
if (age < 0) {
throw IllegalStateException("Age cannot be negative")
}
if ([Link]() /| [Link]()) {
throw IllegalArgumentException("For blank names/surnames use -")
}
}
}
Dealing with exceptions
try {
val (n, s, a) = readLine()/!.split('/')
val person = Person(n, s, [Link]())
addToDataBase(person)
} catch (e: IllegalStateException) {
println("You've entered a negative age! Why?")
You might:
} catch (e: IllegalArgumentException) {
println([Link])
● Handle the error properly and
} catch (e: NullPointerException) {
println("NPE ;^)") continue execution
} catch (e: Exception) {
println("Something else went wrong") ● Handle something on your side
throw Exception("Failed to add to the database", e) and re-throw the exception
} finally {
println("See you in the next episodes!")
}
👀

And a lot in [Link]


Kotlin sugar

try is an expression:

val a: Int? = try { [Link]() } catch (e: NumberFormatException) { null }

More sugar:

require(count /= 0) { "Count must be non-negative, was $count" }


// IllegalArgumentException

error("Error message")
// IllegalStateException
Thanks!

@kotlin | Developed by JetBrains

You might also like