我正在处理以前的开发人员代码,并且他的许多代码隐藏了@
一个例子是:
if(!file_exists($filename))
throw new Exception("file '$filename' does not exist.");
$xmlObject = @simplexml_load_file($filename);
if($xmlObject === false)
throw new Exception("Could not load '$filename' check syntax and file has read permission.");
我理解使用@
隐藏错误但是这是好习惯还是不好?
答案 0 :(得分:2)
只要其他错误捕获到位,例如在上面的示例中,使用@
是可以接受的,因为它隐藏了PHP的标准错误输出。
然而,使用@
来隐藏错误但却无所作为来补救它们被认为是不好的做法。
答案 1 :(得分:1)
这很糟糕。你应该经常检查以确保一切都是合法的。开发好的干净代码可以让您在出现问题时识别问题。通过使用@它将抑制那些可能完全由其他东西引起的错误。你永远不会知道,故障排除变得更加困难。
以上面的例子为例。
$xmlObject = @simplexml_load_file($filename);
那个人已经在检查文件是否存在。您可以删除该@符号并使用try catch块进行更改。
Try {
$xmlObject = simplexml_load_file($filename);
catch....
答案 2 :(得分:0)
很糟糕。
首先开发代码。然后你开始测试它,如果有什么问题,你想通过看错来知道出了什么问题。所以你不想隐藏它们。
如果您已经处于开发和调试状态并希望将其置于在线状态,则必须关闭错误。这可以通过以下方式完成:
<?php
ini_set('display_errors', 'Off');
error_reporting( null );
?>
用户现在不会看到任何错误。更好的是在.htaccess文件中添加它:
# Turn off the errors
php_flag display_startup_errors off
php_flag display_errors off
然后错误已经隐藏,因此不需要@
。
我不记得你想要隐藏错误的状态。