【问题标题】:Not able to catch an exception in PHP with wrapper function in a try-catch with 2 inner functions that throw exceptions无法在 PHP 中使用包装函数在带有 2 个抛出异常的内部函数的 try-catch 中捕获异常
【发布时间】:2019-12-17 12:35:31
【问题描述】:

我在foreach 循环中的 xyz.php 类和其他 abc.php 类中有一个包装函数。当包装类的内部方法抛出异常时,我的 catch 块不会被执行。

xyz.php 类

foreach($rss as $rs){
  try{
     //Included file abc.php class
     $rs->wrapper();
   } catch (exception $e){
      //debug message that displays exception.
      throw $e;
   }
}

abc.php 类

public function wrapper(){
   $this->function_throws_exception1();
   $this->function_throws_exception2();
}

【问题讨论】:

  • exception is Exception - 这可能会或可能不会取决于操作系统和加载文件的方式(命名空间等)。根据您的描述,听起来好像没有正确找到异常类-您不会因此而收到错误。
  • 它只是不会被抓住,不过它更多的是与命名空间和自动加载器有关。
  • @ArtisticPhoenix 感谢您的猜测。我同意这可能与命名空间有关。只需在异常解决之前添加 \。 ``` 捕获 (\exception $e) ```
  • 不大写可能没问题,因为它是一个核心类,但即使它们在不同的情况下工作,也应该始终使用它们的呈现方式。在 Linux 上,如果它们与 Autoloader 等文件名相关联,它们可能会区分大小写

标签: php exception try-catch moodle moodle-api


【解决方案1】:

两个类都在不同的命名空间下。这是与命名空间相关的东西。只需在异常解决之前添加 \。 catch (\exception $e)

【讨论】:

    猜你喜欢
    • 2016-10-27
    • 2014-03-22
    • 1970-01-01
    • 2012-02-20
    • 2011-09-08
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多