`when` can return a value (it’s an expression). “Exhaustive” means all possible cases are covered, so you don’t need an `else`. For `enum` and `sealed class`, the compiler can check exhaustiveness and will force you to handle new cases when the type changes.