An analogy: Premature optimization is considered bad, but some people argue that early (i.e. not TOO early) optimization isn't always bad. It can even be useful. I can agree on that. But, I think most people would agree that ALWAYS doing optimization from the very start would be not be a good practice. Now, imagine that the compiler somehow forced you to do just that.
For me, it's the same with failure handling. Thinking about failure handling prematurely (i.e. too early) is not constructive, but thinking about failure handling early (i.e. not TOO early) can be good. However, ALWAYS thinking about failure handling from the very start is, like optimization, probably not a good practice. But the compiler does force us to do just that - which explains a LOT of the bad code I see in Java. |