Php __toString()不能引发异常
当我转到index.php的浏览器时,我得到以下错误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处理自动加载,这是源内容:
致命错误:方法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;
}