我应该在我的PHP代码中使用@吗?

如果我在代码中使用@ ,它会影响性能吗?


这篇文章有助于回答你的问题: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 - 这就要求你在使用@之前的代码中显式地捕获和处理它,这是处理错误的更好方法。


  • 您不应该使用错误抑制运算符。

    在生产环境中,不应向用户显示PHP错误消息。 它们没有用处,因为它们充满技术细节,并且不告诉用户如何继续。 请记录错误并显示您自己的错误消息。

    在开发环境中,应向用户显示所有PHP错误消息。 它们是问题原因的重要线索,应该提前注意。

    使用错误和日志记录配置选项来区分这两个。 性能不是决定是否使用@的有用标准。


    “愚蠢的一致性是小脑袋的大地精。” :)说“永远不要使用它”是一种业余姿态,海事组织。 我更喜欢$ var = @ $ _ POST ['key'] to $ var = isset($ _ POST ['key'])? $ _POST ['key']:null;

    链接地址: http://www.djcxy.com/p/1733.html

    上一篇: Should I use @ in my PHP code?

    下一篇: PHP functions and @functions