throwsを強制されることでcatchや再列挙が面倒になる為か上位に行けばいくほど
例外の種類が少なくなっている。これはエラーの種類に応じてthrowする例外の種
類を使い分けて、呼び出し側が細かくエラー処理を行いたい場合は個別にcatchし
てそれ以外のエラーは統一的にcatchするか上位ルーチンに丸投げする。という例
外の基本的な使い方に反している。 それともJavaでは例外の内容ではなくどこの
層(アプリやライブラリ)であるかによって種類を切り替えて例外が発生したかどうか
さえ知らせればよい。という設計・実装が一般的なの?だとしたらthrowsは見事にこの
スタイルを(間接的結果的に)押し付けることに成功しているといえるのかも。