The answer is "because the spec says I can't." But the more interesting question is: why does the specification talk about this? In short, I think because it will ruin the logic. The throw expression has no logical meaning. An expression of expressions is just a shortcut in the syntax. We can get away from it only when the return value of the throw expression or its absence does not matter. On the other hand, for logical logic, the return value matters.
source share