PHP5 catch に未定義クラスを書いてもエラーにならない
PHP5 の catch では、未定義クラスを書いてもエラーになりません。
yandod さんのCakePHPの何かを拝見して、今さらながら知りました。
クラス名や関数名は「その場所を通らないと」評価されない、というイメージを持っています。
例えば、こんな風に。
<?php if(false && new UndefinedClass()){ // エラーにならない。 } ?>
catch で見落としてしまうのは↓というイメージを持っているからです。
- 派生クラスの例外が throw された場合、既定クラス名の catch はスキップされる。
- どの catch 節に飛ぶか判定するために上から順に catch クラス名を見ている(はず)。
でも、現実にはエラーにならない。
だとすると catch でマッチするのは
ということなのかな〜と想像してます。