When Without Else Kotlin

How To Articles

When it comes to programming languages, there are numerous features and constructs that make each language unique. In the case of Kotlin, one such feature is the “when” expression, which allows developers to write concise and expressive code. However, it’s worth noting that unlike other languages, Kotlin does not require an “else” statement to be included in the “when” expression. In this article, I’ll delve into the details of the “when” expression in Kotlin and discuss why the absence of an “else” statement can be both a blessing and a curse.

An Introduction to Kotlin’s “when” Expression

Kotlin’s “when” expression is similar to the traditional switch statement found in other programming languages. It allows developers to check a value against multiple branches and execute code based on the value’s match. The syntax for the “when” expression is as follows:

when (value) {
branch1 -> { // code to execute if value matches branch1 }
branch2 -> { // code to execute if value matches branch2 }

Each branch in the “when” expression consists of a value to match and the corresponding code to execute if the value matches. Unlike the switch statement in some other languages, Kotlin’s “when” expression also supports more complex conditions for matching, such as checking ranges or types.

The Power of the “when” Expression

One of the key advantages of using the “when” expression in Kotlin is its ability to handle multiple cases in a concise and readable manner. With a series of branches, developers can easily express complex logic without having to resort to nested if-else statements. This leads to cleaner and more maintainable code, which is always a plus.

Another benefit of the “when” expression is its support for smart casts. In Kotlin, when a value matches a specific branch, the compiler automatically casts the value to the corresponding type. This eliminates the need for type-checking and manual casting, saving developers time and reducing the chance of errors.

The Absence of an “else” Statement

One interesting aspect of Kotlin’s “when” expression is the absence of an “else” statement. Unlike some other programming languages, Kotlin does not require developers to include an “else” branch in the “when” expression. This means that if none of the branches match the value being checked, the “when” expression simply returns nothing and the code execution continues as usual.

On one hand, this can be seen as a benefit as it allows developers to write more concise code. If there is no specific action to take when none of the branches match, there is no need to clutter the code with an unnecessary “else” branch. This can lead to cleaner and more focused code.

However, the absence of an “else” statement can also be a potential drawback. In some cases, it may be necessary to handle the scenario when none of the branches match the value being checked. This could be used to provide a default action or raise an error. Without an “else” branch, developers need to find alternative ways to handle such situations, which can make the code less intuitive and harder to understand.


Kotlin’s “when” expression is a powerful feature that allows developers to write expressive and concise code. Its ability to handle multiple cases in a clean and readable manner makes it a valuable tool in a programmer’s arsenal. However, the absence of an “else” statement in the “when” expression can be both a blessing and a curse. While it allows for cleaner code in some scenarios, it may require additional considerations and alternative approaches in cases where a default action is needed. As with any feature, it’s important for developers to weigh the pros and cons before deciding whether or not to use the “when” expression without an “else” statement.