`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.
Expanding on the short answer — what usually matters in practice:
A tiny example (an explanation template):
// Example: discuss trade-offs for "`when`-as-an-expression:-what-does-it-mean-that-"
function explain() {
// Start from the core idea:
// `when` can return a value (it’s an expression). “Exhaustive” means all possible cases are
}