我正在为作业做一个小文件浏览器 - 而且我的工作和我需要的一样好,但是我现在对PHP中的错误场景感到有点困惑,因为我正试图重构我的编码。由于E_WARNING,我是否需要尝试/捕获PHP中的opendir?
我习惯了C++/C#try/catch错误处理,其中PHP似乎有一些变体。什么是困惑我的是:
资源执行opendir(字符串$ PATH [,资源$背景])
成功则返回目录句柄资源,或FALSE的失败。
如果路径由于权限限制或文件系统错误而无法打开 ,则opendir()返回 FALSE并生成级别为E_WARNING的PHP错误。您可以通过在 函数名称的前面加上'@'来抑制opendir()的错误输出 。
从http://php.net/manual/en/function.opendir.php。
我是否需要捕获在那里提到的E_WARNING级别生成的PHP错误,还是很愚蠢?我不明白为什么它会返回false并抛出一个错误 - 不应该错误抛出使它,所以你不正常返回?
这是一个PHP内在不一致的例子,它绝对是一种*脚本*语言。你不会用try ... catch来捕捉警告。异常和错误/警告是两种不同机制的组成部分,并且稍后会添加例外。这相当混乱。在PHP中非常小心谨慎地编写代码:您在C++/C#中的专家级语言是一致的,PHP不是。小心。 – gd1
小心使用'@'来处理“错误”。这将抑制所有错误,而不仅仅是警告。查看PHP手册中的提示:http://www.php.net/manual/en/language.operators.errorcontrol.php –
我知道有一件有趣的事情发生在那里。我读到的第一个网站叫做E_WARNING,这个例外让我感到困惑。谢谢你们。 –