途中で送ってしまった。書き直し。

例えばファイル処理クラスがあったとして、ロード処理でファイルが見つからない場合は
FileErrorExceptionを継承したFileNotFoundExceptionを返すとする。

あるゲームではファイル名に特定のルールがあって、どちらかのファイルがなければどちらかのファイルがあるみたいな決まりが合って、
ファイルの存在を見て処理を切り分けているとする。
その場合は読み込み処理でFileNotFoundExceptionをキャッチして、別のファイルを探しに行く処理を書く。

また別のゲームではファイルがなかったら画面にエラーを出すだけかもしれない。
その場合はFileErrorExceptionをmainに近いところでキャッチしておけば、
様々な読み込み処理でエラー処理を省ける。

こういう感じで必要に応じて対応のレベルを切り替えるわけだけど、
そういう対応をライブラリをいじることなく対応できてしまうのが例外のいいところ。