gpt4 book ai didi

php - 无法捕获 BadMethodCallException

转载 作者:可可西里 更新时间:2023-10-31 23:22:38 25 4
gpt4 key购买 nike

这是我的部分代码:

// ... code ...
$action = self::defineAction( $request->getPath() );
try {
$response = Controller::$action( $request );
} catch( \BadMethodCallException $exception ) {
Logger::logError( $exception );
$response = new NotFoundResponse();
}
// ... code ...

如果由于某种意外,具有已定义名称的 Controller 的操作未实现或名称定义错误,我会 try catch 异常。

但是我没有捕获异常,而是在 Apache 的错误日志中得到了 fatal error :

PHP Fatal error:  Call to undefined method app\\Controller::testingAction() ...

如果我尝试在 Controller 的现有(已定义和可调用)操作中调用未定义的方法,我也无法捕获上述异常 - 而是发生 fatal error :

PHP Fatal error:  Call to undefined method app\\SomeClass::someUndefinedMethod() in /********/Controller.php on line *** ...

用“\Exception”替换“\BadMethodCallException”没有效果:我一直收到 fatal error 。

将“try-catch” block 放在 Controller 的每个 Action 中对我来说不是可接受的解决方案。

为什么这样捕获不到异常?我该如何解决这个问题?

我正在运行 PHP 5.3.8。

最佳答案

Catch block 只能捕获抛出的 异常,不能捕获错误。 Call to undefined method 是一个错误,您需要对此进行测试并自己抛出异常。 Please see this异常和错误之间的区别。

您可以通过执行以下操作来测试方法是否存在:

if( !method_exists('app\Controller', 'testingAction') ) {
throw new \BadMethodCallException();
}

关于php - 无法捕获 BadMethodCallException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13494415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com