PHP错误报告和邮件()

PHP错误报告和邮件(),php,error-handling,sendmail,error-reporting,Php,Error Handling,Sendmail,Error Reporting,我现在有set\u error\u handler()在遇到任何问题时抛出ErrorException。此外,我在-1上有错误报告(),因此对数组进行错误索引会引发异常 无论如何,这只是对我的错误/报告环境的粗略概述;PHPmail()函数正在我的(Win7)开发机器上抛出错误,这是因为我没有安装邮件服务器。我尝试在它前面加上@来关闭它,但它仍然会触发错误,并因此引发异常。我可以用try{}来包装它,但我很好奇为什么它不会关闭 为什么不闭嘴 重申一下,我们几乎可以从等式中删除mail()(据我所

我现在有
set\u error\u handler()
在遇到任何问题时抛出
ErrorException
。此外,我在
-1
上有
错误报告()
,因此对数组进行错误索引会引发异常

无论如何,这只是对我的错误/报告环境的粗略概述;PHP
mail()
函数正在我的(Win7)开发机器上抛出错误,这是因为我没有安装邮件服务器。我尝试在它前面加上
@
来关闭它,但它仍然会触发错误,并因此引发异常。我可以用
try{}
来包装它,但我很好奇为什么它不会关闭

为什么不闭嘴

重申一下,我们几乎可以从等式中删除
mail()
(据我所知);我只是想知道为什么在这种情况下,
@
不会用
mail()
或任何功能来完成它的工作。我只是想
mail()
可能因为某种原因是一种特殊情况。


感谢我们的朋友XDebug:

(!)ErrorException:mail()[function.mail]:无法在“localhost”端口25连接到mailserver,请验证php.ini中的“SMTP”和“SMTP_端口”设置,或在第16行的C:\xampp\htdocs\dbc_relaunch_2-0-0\mf\handlers\api\mail\send.php中使用ini_set()


好吧,我只是选择了:

try{
    mail($args);
catch(Exception $exception){
    return $failure;
}
return $success;
而不是:

if(@mail($args)){
    return $failure;
}
return $success;

一切都很好;我正在浏览答案@Pheonix linked,但是任何人只要有简短的回复就可以免费回答。

这里有一个有趣的阅读


本页详细讨论了您正试图实现的目标。

能否向我们展示您的错误处理程序?请注意,无论您的
error\u reporting()

特别值得注意的是,该值 如果导致 错误是由@ 错误控制操作员

从的手册页


如果您不想为前缀表达式
@
引起的错误引发异常,则必须在处理程序中检查
error\u reporting()
的返回值。如果它返回零,那么您正在处理一个被抑制的错误。

这不是一个很好的答案,但我怀疑这是因为错误“消息”和错误“异常”不一样

我发现,
set\u error\u handler()
实际上覆盖了@符号

也就是说,在处理异常时,try,catch始终是最好的方法


希望这有点帮助。

什么样的错误?它们是关于什么的?错误是什么?我怀疑
@mail()
不是真正的源代码。对不起,应该包括在内,一秒钟。@Pheonix-那里到PHP的链接已经死了,我正在搜索归档文件,但有评论说“黑魔法”正在进行中,我宁愿
试试它,但是
@
成功的缺乏让我困惑。请注意,先生。我的错误处理程序只会抛出一个
ErrorException
;我需要过滤沉默的错误。