if(! foo())
 { /* 失敗した時の処理 */ }
と
try{ bar(); } catch(,,,)
 { /* 失敗した時の処理 */ }
の差をどう感じるか、かな。
失敗した時の処理が必要ないなら冗長に感じるのも分かるけどね。
マクロでも作ると楽かも?

でも、そもそも例外ってのはすぐ復帰できるようなものには使わず、
そういう時は bool 値か何かを返すのが普通だと思うんだけど、
その関数はそういう仕様にはなってないのかな?