深い再帰で
各レイヤーにifを入れて分岐させるよりは
throwのlongjumpに任せて例外時のみ判断が入るようにした方が高速