PHPのコードがエクセプションをキャッチしてくれない!

と3日ぐらいばたばたしてしまいました。

以下のコード(抜粋)、おかしいところないでしょう。ないですよね?(あるんですけど)

<?php
		try {
			$response = $request->send();
		} catch (Exception $e) {
			echo "FAILED[$trial]: $url\n";
		}

これが何故通らないのか、実際にはコマンドラインから走らせているので、スタックトレースはいて終了してしまうのです。何で!?と嘆いて悶絶して3日目。

原因がわかりました。上のコードだけ見てもわかんないです。このコードは名前空間を指定していたのです。原因は、

<?php
		} catch (\Exception $e) {

Exceptionはグローバルに属しているものだから、\が必要だったんですね。言われてみれば納得。

しかし次の疑問。なんでcatch(Exception ...)がエラーにならないのだろうか?この名前空間で定義もしていないExceptionを使っている段階でエラー出してくれてもよいだろうに。