我尝试使用“set_exception_handler”函数来捕获我的 ActionController 异常。
在任何视图(例如 index.phtml)中,此代码都可以正常工作,视图显示 Helloooo。
<?php
namespace App;
echo $this->doctype();
class Fun {
static function exception_handler(\Exception $ex){
echo "Heloooo";
}
function method(){
set_exception_handler('App\Fun::exception_handler');
throw new \Exception('One Exception');
}
}
$f = new Fun();
$f->method();
我不明白,因为 ActionController.php 中的相同代码 set_exception_handler() 没有捕获异常。在这种情况下,视图显示带有“一个异常”消息的 zend 异常模板。
顺便说一句,异常堆栈没有显示任何警告消息,那么我假设 set_exception_handler() 参数很好。
namespace App\Controller;
use Zend\....... //All namespaces used
class Fun {
static function exception_handler(\Exception $ex){
echo "Helloooo";
}
function method(){
set_exception_handler('App\Controller\Fun::exception_handler');
throw new \Exception('One Exception');
}
}
$f = new Fun();
$f->method();
class MainController extends AbstractActionController {
//The Controller Code (in this test it doesn't execute).
}
我认为 Zend Framework 使用任何技术来捕获其他级别的控制器异常。请问有人有什么想法吗?