でも、例外って使うと二度手間三度手間になるんだよな
try {
 FILE* fp = fopen("abc.txt", "r");
 if (fp == NULL)
  throw exception();
} catch (...) { }

これじゃエラーチェックしてgotoしてるのと変わらんし。

try {
 FILE* fp = my_fopen_with_exception("abc.txt", "r");
} catch (...) { }

これだといちいち関数作らないとならないし。
出来合いのものといっても、事実上boostしか標準的な選択肢が存在しないからな。