これが私のコードの一部です:
// ... code ...
$action = self::defineAction( $request->getPath() );
try {
$response = Controller::$action( $request );
} catch( \BadMethodCallException $exception ) {
Logger::logError( $exception );
$response = new NotFoundResponse();
}
// ... code ...
誤って定義された名前のコントローラーのアクションが実装されていない場合、または名前が間違って定義されている場合は、例外をキャッチしようとします。
しかし、例外をキャッチする代わりに、Apacheのエラーログに致命的なエラーが表示されます。
PHP Fatal error: Call to undefined method app\\Controller::testingAction() ...
コントローラの既存の(定義された呼び出し可能な)アクション内で未定義のメソッドを呼び出そうとすると、前述の例外をキャッチできません-代わりに致命的なエラーが発生します:
PHP Fatal error: Call to undefined method app\\SomeClass::someUndefinedMethod() in /********/Controller.php on line *** ...
「\BadMethodCallException」を「\Exception」に置き換えても効果はありません。致命的なエラーが発生し続けます。
「try-catch」ブロックをコントローラーのすべてのアクション内に配置することは、私にとって許容できる解決策ではありません。
なぜこの方法で例外をキャッチできないのですか?どうすればこの問題を解決できますか?
PHP5.3.8を実行しています。