这种处理PHP错误的方法安全吗?它是地道的吗


Is this way to deal with errors safe in PHP ? Is it idiomatic?

我在我的几个函数中写了很多这样的代码:

$f = fopen($fname);
if ($f === false) {
    throw new Exception("cannot open $fname");
}

当你处理大量要打开的文件时,这是冗长的&处理我想知道这是否可以在没有任何意外不良副作用的情况下工作:

$f = fopen($fname) or die("cannot open $fname");

这在Perl中是惯用的,但在PHP中正确吗?还有其他更好的方法吗?这似乎是有效的,但我知道PHP会以很多意想不到的方式咬你。

我倾向于选择这样的东西:

if(!($f = @fopen($fname, 'r'))) {
    throw new Exception("cannot open $fname");
}

perl样式也很好,尽管我相信fopen会引起错误。

就我个人而言,我将所有代码作为一个可能引发异常的函数。然后调用捕捉异常的函数。在收到异常(如果是现场(生产))后,生成适当的页面和日志详细信息。否则(测试/开发)将这些细节放到页面上。