我使用DoctrineORMModule(https://github.com/doctrine/DoctrineORMModule,通过Composer安装)和ZF2来开发Web应用程序。
我的问题是,我没有从教条中获得例外,只有“内部500”错误。 即使有了
ini_set('display_errors', 1);
error_reporting(E_ALL);
我没有看到错误,只是“内部500”消息(我也在php.ini中应用了这些settigns)。 “php_error_log”中也没有条目。
如果我用try-catch-block包围行,则不会捕获任何异常。调用flush()和persist()时会发生这种情况。显示其他PHP错误。
示例:
ini_set('display_errors', 1);
error_reporting(E_ALL);
$rel = new \MyApp\Entity\UserRelationship();
$rel->relatingUser = $user;
$rel->relatedUser = $friend;
try {
$em->persist($rel);
} catch ( Exception $e ) {
var_dump($e);
}
这导致“内部500”错误,但我猜教义应该抛出错误。
我用Google搜索了几个小时,但我无法弄清楚,如果这是默认行为,或者您必须配置doctrineORMModule来记录/抛出异常。如果有人能给我一些关于如何获得例外的提示,我将非常感激,因为这会让我的工作变得非常困难。
编辑:我可以使用persist()和flush(),执行数据库查询,一切正常。它只是如果我在实体中犯错并希望坚持或冲洗它们,我不会得到例外。如果我在persist()之前回显了某些内容,但未显示“内部500”,但数据库未更新或任何内容。
Edit2:上面示例中的错误是错误的“mappedBy”-entry和/或错误的命名setter。仍然没有例外:))
答案 0 :(得分:1)
这与教义无关。您正在使用的任何库中都会抛出异常。您必须知道,一般情况下,当您没有捕获异常时,由于未捕获的异常,php将创建致命错误。我认为你在设置display_errors
/ error_reporting()
时犯了一个错误,因为它应该显示php错误。
此外,Zend Framework有一个异常处理程序来捕获运行部分中的异常。如果您在Zend\Mvc
的动作控制器中拥有此代码,则会显示一个不错的错误页面。该框架在很多地方都会出现错误,但如果您将此代码放在没有任何catch
的情况下,它就不会被捕获。