Curly braces removal for various cases was discussed multiple times here (I am personally completely opposed to the idea).
As for your example, it usually leads to performance problems to catch errors from single operation. Catch and re throw exceptions is very slow on JVM, so usually there should be only one catch block on the top level and it should be visible.
Your own example is a great illustration of why this is not a great idea. Since try is an expression in Kotlin, your example has two possible interpretations:
Making code harder to understand for the sake of saving a couple of characters in a construct which isn’t commonly used as a one-line statement is hardly a worthwhile tradeoff.
I would say default parameters (like in lambdas) would help a lot:
try { reader() } catch { it.message ?: “error” }
(or maybe at least catch (e) { e.message ?: “Error” }
This would be backwards incompatible so low chance of passing - my proposition is just omitting type optionally (as we do in many other cases) but doesn’t change the syntax for existing code nor introduces something completely not compatible with current way of handling exception