【发布时间】:2013-11-23 19:08:28
【问题描述】:
我遇到了一个问题,即抛出异常但未在 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 中的代码应该是轻量级的。但是我们必须在执行任何操作之前立即获取一些数据,因为它将包含对要执行的操作至关重要的数据。此数据在第一次访问后被缓存,因此每次其他页面加载都会避免这种开销。
我也用谷歌搜索过,但显然没有其他人经历过、询问过或记录过它。
【问题讨论】:
-
我的假设是在内部触发了不同的异常并在其他地方捕获,ZF2 创建一个响应对象并返回 - 毕竟 ZF2 具有内部错误处理。
-
获取此数据的另一种方法是 Zend 的内置记录器:framework.zend.com/manual/1.12/en/zend.log.overview.html
标签: php exception exception-handling zend-framework2 try-catch