今日気がついたけど、例外ってすごい。変数がスコープをはずれたらデストラクタを呼ぶのは分かる。スコープがはずれる所に、デストラクタを呼び出すコード入れればよいから。でも、例外だったらcatchされるまで、順に関数呼び出しを戻っていって、スコープのはずれたオブジェクトのデストラクタを順に呼ぶんだよ。どういう仕組みなんだ?お前実装しろよって言われたら困る。多分、泣く。各関数のお尻にに例外が通ったらこの関数呼んでね?って領域でもあるのだろうか。 a()→b()→c()の順に関数が呼ばれて、c()で例外が発生して、a()でcatchされたとき、b()のスタック上にあるオブジェクトのデストラクタの呼び方って、b()自体でないとわからないよね。各関数に、例外が通るパスa'(), b'(), c'()みたいなエントリーがあって、c()で例外が投げられると、c'()→b'()を通って、a()に制御が移るんだ
![C++の例外ってすごい - なつたん](https://cdn-ak-scissors.b.st-hatena.com/image/square/de62e9244ef99b3227ad9307b09249537676dfbe/height=288;version=1;width=512/http%3A%2F%2Fnatu.txt-nifty.com%2F.shared-cocolog%2Fnifty_managed%2Fimages%2Fweb%2Fogp%2Fdefault.png)