Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php __toString()不能引发异常_Php_Spl - Fatal编程技术网

Php __toString()不能引发异常

Php __toString()不能引发异常,php,spl,Php,Spl,当我转到index.php的浏览器时,我得到以下错误 致命错误:方法MyDirectoryIterator::\uu toString()不能在第0行的/home/oussama/Desktop/CoursesTraining/oopinhp/index.php中引发异常 当我试图捕获异常时,我得到了相同的错误,那么我该怎么做呢 知道什么是例外吗 我的主目录包含两个文件index.php和MyDirectoryIterator.inc.php, 我使用composer处理自动加载,这是源内容:

当我转到index.php的浏览器时,我得到以下错误
致命错误:方法MyDirectoryIterator::\uu toString()不能在第0行的/home/oussama/Desktop/CoursesTraining/oopinhp/index.php中引发异常

当我试图捕获异常时,我得到了相同的错误,那么我该怎么做呢 知道什么是例外吗

我的主目录包含两个文件index.php和MyDirectoryIterator.inc.php, 我使用composer处理自动加载,这是源内容:

index.php

<?php

require_once './vendor/autoload.php';


$files = new MyDirectoryIterator('../');
echo $files;

如果有人遇到同样的问题,我就是这样解决的:

异常是由于访问列表中的一些文件的权限被拒绝,所以我只在uuu toString方法中添加了一个try-catch块

function __toString()
{
    $output = '';
    try {    
        foreach($this->_rfiles as $file)
        {
            $output .= $file . '<br />';
        }
    }
    catch(Exception $e) {}
    return $output;
}
函数
{
$output='';
试试{
foreach($this->\r文件为$file)
{
$output.=$file.'
'; } } 捕获(例外$e){} 返回$output; }

我注意到了一件奇怪的事情,为什么当我从类中删除_toString()并将其逻辑添加到构造函数中时,没有抛出异常?所有文件都列出了,没有异常?

要查找异常,请创建一个新方法复制代码并调用该方法,查看代码,我无法100%确定它为什么会在那里抛出异常。这就是所有的代码吗?@exussum我认为
RecursiveIteratorIterator
类有一个iterable方法抛出异常,但是对于异常查找策略+1。
function __toString()
{
    $output = '';
    try {    
        foreach($this->_rfiles as $file)
        {
            $output .= $file . '<br />';
        }
    }
    catch(Exception $e) {}
    return $output;
}