Skip to content
DeveloperMemos

How to Use a Try-Catch Block in Kotlin

Kotlin, Exception Handling2 min read

If you're writing code in Kotlin, it's essential to understand how to handle exceptions. Exceptions can occur at runtime when something unexpected happens, such as a null pointer exception or an arithmetic overflow. If an exception is not handled properly, the application may crash, leading to a poor user experience. In this post, we'll explore how to use a try-catch block in Kotlin to handle exceptions and write safer code.

The Basics of Exception Handling

Exception handling is a mechanism that enables programmers to handle errors and unexpected events that occur during program execution. When an error occurs, it generates an exception object, which contains information about the error, such as its type, message, and stack trace. To handle exceptions in Kotlin, you can use a try-catch block.

Using a Try-Catch Block in Kotlin

A try-catch block is used to catch exceptions that are thrown within a block of code. Here's the basic syntax for a try-catch block in Kotlin:

1try {
2 // code that may throw an exception
3} catch (e: Exception) {
4 // code to handle the exception
5}

The try block contains the code that may throw an exception. If an exception is thrown within the try block, control is transferred to the catch block. The catch block contains the code that handles the exception. In the example above, the catch block catches exceptions of type Exception. You can specify different types of exceptions to catch by using multiple catch blocks.

Here's an example of a try-catch block in action:

1fun divide(a: Int, b: Int): Int {
2 return try {
3 a / b
4 } catch (e: ArithmeticException) {
5 0
6 }
7}
8
9val result = divide(10, 0)
10println(result) // Output: 0

In this example, we define a function called divide that takes two integers as input and returns their division. Within the function, we use a try-catch block to catch any ArithmeticException that may occur if the second parameter b is zero. If an exception occurs, the function returns zero instead of crashing the application.

The Finally Block

In addition to the try and catch blocks, there is also a finally block that is executed regardless of whether an exception is thrown or not. The finally block is usually used to release resources or perform cleanup operations, such as closing a file or a database connection.

Here's an example of a try-catch-finally block:

1fun readFile(filename: String) {
2 val reader = File(filename).bufferedReader()
3
4 try {
5 // read data from file
6 } catch (e: IOException) {
7 println("Error reading from file")
8 } finally {
9 reader.close()
10 }
11}

In this example, we define a function called readFile that reads data from a file specified by the filename parameter. Within the function, we use a try-catch block to catch any IOException that may occur while reading the file. After the try block completes, the finally block is executed, which closes the file reader, regardless of whether an exception was thrown or not.

Conclusion

Exception handling is an important aspect of writing safe and reliable code in Kotlin. By using a try-catch block, you can catch exceptions that may occur at runtime and handle them appropriately. Remember to always handle exceptions in your code to prevent crashes and provide a better user experience.