e4533.cpp

例外ハンドラは子クラスから書く

/* A:e4533: 例外ハンドラが前出の "***" 用例外ハンドラによって隠されてしまいます */

修正前 class ParentException {}; class ChildException : public ParentException {}; void x() { try { … } catch(ParentException &e) { … } catch(ChildException &e) /* NG 到達しないコード */ { … } }
修正後 void x() { try { … } catch(ChildException &e) { … } catch(ParentException &e) { … } }

解説 例外のcatchは子クラスの例外から書かないと、親クラスのcatch節に喰われてしまい、到達しません。