これの補足つーかさ。
「適切な場所を見つけてそこでする」というのはね、いわゆる「責務分割設計」ちゅぅ大事で大事くて大事な話だからさ、(昨日の)そっちの話は絶対に疎かにして欲しくないわけよ、なにもエラー処理に限った話じゃない。
そうなんだけれども、こと「例外処理」に限って話す場合、そういえば、と。
うろおぼえつーか、今更教科書的なものを読み返したりしないし、それを手持ちでもなかったりするんだけれど、「例外機構」を持つ言語がさ、「例外機構、すげーんだぜ」の論拠になるのってね、以下のような対応の置き換えなわけよ:
1 int ret1, ret2, ret3;
2 ret1 = somefun1();
3 if CHECK_RESULT(ret1) == ERROR:
4 set_last_message("なんかえらいことがsomefun1で起こりやがったのだぜ");
5 return NULL;
6 ret2 = somefun2();
7 if CHECK_RESULT(ret1) == ERROR:
8 set_last_message("なんかえらいことがsomefun2で起こりやがったのだぜ");
9 return NULL;
10 ret3 = somefun3();
11 if CHECK_RESULT(ret3) == ERROR:
12 set_last_message("なんかえらいことがsomefun3で起こりやがったのだぜ");
13 return NULL;
これが例外機構がある言語なら:
1 int ret1, ret2, ret3;
2 // この場で何か出来る場合は以下のように catch して云々する、そうでないなら
3 // catch 云々はここになくていい
4 try {
5 // エラー処理に煩わされず本題に集中出来るのだぜベイベー
6 ret1 = somefun1();
7 ret2 = somefun2();
8 ret3 = somefun3();
9 } catch (const std::runtime_error& e) {
10 std::cerr << e << std::endl;
11 }
おそらく C++ の教科書だの java の教科書だのでは例外の売り文句として、まさに「本題に集中出来るんだぜ、読みやすいでしょーよ」と書いてあるんじゃねーかと思うわけよな。なんなの、教科書も読まない独学なのですかいな? いまどきはそれが合理的、とかかい? いや、でもちげーよなぁ、こんなん何十年も前からよくみるダメコードだものなぁ。何の差なんだろうねぇ、こんなのさ、「才能」の差ではないよなあ?
てなことを思う今日この頃。