Symfony2 - 从名称空间“AppBundle \ Controller”获取'尝试加载类“异常”。

时间:2017-12-02 21:23:05

标签: symfony custom-exceptions

抛出简单的异常是一种常见的做法,所以我认为它是'内置'Symfony2,'开箱即用'。但是,执行下面的代码,我得到的错误部分显示在这个问题的标题中并在下面完整显示。

   if( ( $result === FALSE ) || ( $result !== 1 ) ) {

     throw new Exception( 'update user account data function -- ' .
                          'update return value: ' . $result . ' - ' .
                          'unable to update your account!' );

   } // if( ( $result === FALSE ) || ( $result !== 1 ) ) ...

这个错误告诉我Symfony2不支持新的Exception类,除非我也将它添加到我的Controller的 use 区域,但是我不知道要添加它的值来使用它PHP的特色。

有人请告诉我在使用区域放什么?

在我的代码中,根据w3School的PHP例外页面https://www.w3schools.com/php/php_exception.asp中显示的示例, $ result 变量由Doctrine DBAL 更新设置方法(http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/data-retrieval-and-manipulation.html#update),返回更新的行数,如果有错误则返回FALSE。

我知道我的代码中的更新方法有效,因为大多数情况下 $ result 都会被赋予非零返回值并且不会发生异常,但有时< strong> $ result 被赋予0,仍然没有异常,表示已知存在的行实际上没有被更新。

有没有办法解决更新失败的原因?

在这种情况下,我尝试使用上面的代码抛出一个异常,但是Symfony2会显示以下内容:

  

尝试从命名空间“AppBundle \ Controller”加载类“Exception”。   您是否忘记了“使用”声明,例如“Symfony \ Component \ Security \ Acl \ Exception \ Exception”,“Symfony \ Component \ Serializer \ Exception \ Exception”或“Symfony \ Component \ Config \ Definition \ Exception \ Exception”?   500内部服务器错误 - ClassNotFoundException

  1. 在src / AppBundle / Controller / BreakinOutAdminController.php第1361行
  2. 1358. 1359. if( ( $result === FALSE ) || ( $result !== self::ONE_ROW ) ) { 1360. 1361. throw new Exception( 'update user account data function -- ' . 1362. 'update return value: ' . $result . ' - ' . 1363. 'unable to update your account!' ); 1364.

    第1361行在Symphony2 didplays页面中突出显示。

    所以,有两个问题:

    我应该在使用区域放置什么,以便我可以使用自己的消息抛出异常?

    有没有办法解决更新失败的原因?

    谢谢。

1 个答案:

答案 0 :(得分:1)

Attempted to load class "Exception" from (the current) namespace是我经常犯的问题。这不是Symfony问题 - 只是关于默认命名空间。

...new Exception(或SplExceptions,或其他任何东西 - DateTime是另一个经常看到相同问题的人)只是意味着从当前命名空间中获取类,除非它是从{{{ 1}} list - 但useException或其他人位于根命名空间 - DateTime中。您可以在每个文件中\Exception使用别名,以便在本地使用,或者在\ backslash前添加。良好的单元测试运行所有代码并因此打破 - 或静态代码分析,如phpstan,可以帮助很多,以避免生成错误,其中这些类不存在于当前可用的名称空间中脚本。