这是我的代码的一部分:
// ... 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 *** ...
用“\Exception”替换“\BadMethodCallException”没有任何效果:我一直在获取致命错误。
将“try-catch”块放在控制器的每个动作中对我来说不是可接受的解决方案。
为什么不能以这种方式捕获异常?我怎么解决这个问题?
我正在运行 PHP 5.3.8。