我遇到的问题是抛出异常但未在Module.php中捕获。抛出异常的代码包含在try / catch中。没有什么真正花哨的,所以我假设ZF2有一个怪癖和/或理由不允许在这里捕获异常。
代码如下(必要时简化):
class Module
{
public function onBootstrap(MvcEvent $e)
{
// Get service manager, etc.
// Set up some environment stuff
try {
// exception is thrown
}
catch (\Exception $e) {
echo $e->get_message();
exit;
}
}
}
为什么没有捕获异常?
在一个理想的世界里,有一种方法可以在这里捕捉这个例外。但是,如果这不可能,或者过于复杂而不值得付出努力,那么在页面加载过程中尽早获取此数据(无论来源)的替代流程将不胜感激。
元
我知道Module.php中的代码应该是轻量级的。但是我们有在执行任何操作之前立即获取一些数据,因为它将包含对要执行的操作至关重要的数据。第一次访问后会缓存此数据,因此每次其他页面加载都会避免此开销。
我也用谷歌搜索了这个,但显然没有其他人经历过这个,被问过或者记录过它。
答案 0 :(得分:2)
这个代码在模块类中对我来说很好用:
public function onBootstrap(MvcEvent $e)
{
try {
// exception is thrown
throw new \Exception('My exception here');
}
catch (\Exception $e) {
echo $e->getMessage();
exit;
}
}
显示异常消息并退出。 调查发生情况的一种方法是使用xdebug for step by step debugging。 只需在模块中添加一个断点,看看ZF正在做什么。