>>564
例外使ったこと無いの?
もともと >>560 のような動作も含めて柔軟にエラー処理ができるように
考えられた言語機能が例外なんだよ。

必要な情報は例外オブジェクトに詰めて投げればいいんだ。

それに、その理由で source_of_error() まで見に行くって言うことだと、
戻り値でも同じことする必要があるんじゃないの?