Hai*_*vgi 22
本文有助于回答您的问题:http://anvilstudios.co.za/blog/php/how-to-ignore-errors-in-a-custom-php-error-handler/
特别是"@有其用途"部分:
现在,我们应该
@非常谨慎地使用运算符,处理错误而不是抑制错误.但是我可以想到很少的情况可能需要抑制一些PHP错误.我举两个例子:
您可能正在使用一些使用了它的大型外部库
@,因此需要能够忽略这些错误作为库的作者,否则您的程序将在不需要的地方绊倒.您可以编辑库,但可能需要花费很多时间,并且每次作者发布库更新时都必须再次应用您的更改.另一个例子可能是当该
fopen函数用于打开外部URL时,由于许多可能的原因之一而无法打开URL.该函数返回false以指示失败,这很好,但引用PHP手册,"E_WARNING生成级别的错误"也不是很好 - 它应该真的导致异常被抛出,因为这是一个不规则的情况,但应该是预期的.在这种情况下,人们希望能够忽略错误,并继续执行程序,以适当的方式明确响应 - 确切地说是什么例外!但是,有一种方法可以将错误转换为异常,因此请避免使用@在这种情况下.在你的自定义错误处理程序(我们发现自己在这篇文章中),抛出一个ErrorException - 这需要你在使用@before 的代码中显式捕获和处理它,这是一种更好的处理错误的方法.
"愚蠢的一致性是小脑袋的大人物." :)说"从不使用它"是一种业余立场,IMO.我更喜欢$ var = @ $ _ POST ['key']到$ var = isset($ _ POST ['key'])?$ _POST ['key']:null;