Interesting that you miss checked exceptions. Is one of the most criticized feature of the language, see Does Java need Checked Exceptions? [0]. Also in this discussion between Anders Hejlsberg and Bruce Eckel they are discussing why C# did not adopt them: The Trouble with Checked Exceptions [1]. Also Java theory and practice: The exceptions debate [2] discusses the more on the topic.
[0] http://www.mindview.net/Etc/Discussions/CheckedExceptions/