Almost like clock work, a discussion on exceptions always ends up comparing .NET’s implementation with Java’s. One of the significant features in Java is checked exceptions. Nick mentioned that he liked the feature but I’m not convinced.

My issue with checked exceptions in Java was that it would encourage sloppy deveopers not to say their method could throw Exception, but rather the people calling those APIs would do things like:

try
{
   DoSomething();
}
catch (Exception)
{
}

Basically - just swallow exceptions consequences be damned. It would be better if the language allowed you to "acknowledge" that an exception could be thrown but not actually handle it. I also think that empty exception handlers should be a hard compiler error.