C#でthrows宣言をはずしたことは、問題となる闇が多く含まれている。

throws宣言に相当することは、IDEがやることだ、コメントとして記述できれば
よいという意見があるが、

緊急時でもIDEなしでもいつでもプログラミングできる環境がなくなってしまう欠点がある。
コメントによる記述も、コメント内容をコンパイラがチェックしてくれるわけでもない。
アナログで間違いを犯すこともある人間のやることは標準コンパイラや
機械よりも信用できない。

仕様書とソースコードとが互換性が無くては仕様書も信用できない。

throws宣言をつけることで仕様書により高い信頼性を与えることができる。
ソースコードを書くだけで仕様書の大部分を書いたことになれば
さらに一石二鳥。M$はC#の仕様選定でその選択を誤ってしまった。