if foo <> nil then ...
が嫌だから例外投げるんだし
一つの機能を複数の方法で提供するのは混乱の元だ。