I've never seen a sensible use of throw/catch in ruby before. Congrats.