所以:
@fopen($file);
忽略任何错误并继续
fopen($file) or die("Unable to retrieve file");
忽略错误,杀死程序并打印自定义消息
是否有一种简单的方法可以忽略函数中的错误,打印自定义错误消息而不是终止该程序?
答案 0 :(得分:4)
典型地:
if (!($fp = @fopen($file))) echo "Unable to retrieve file";
或使用您的方式(丢弃文件句柄):
@fopen($file) or printf("Unable to retrieve file");
答案 1 :(得分:4)
使用例外:
try {
fopen($file);
} catch(Exception $e) {
/* whatever you want to do in case of an error */
}
的更多信息
答案 2 :(得分:2)
slosd 的方式不起作用。 fopen 不会抛出异常。你应该手动把它扔掉 我将修改你的第二个问题并将其与 slosd :
结合起来try
{
if (!$f = fopen(...)) throw new Exception('Error opening file!');
}
catch (Exception $e)
{
echo $e->getMessage() . ' ' . $e->getFile() . ' at line ' . $e->getLine;
}
echo ' ... and the code continues ...';
答案 3 :(得分:1)
这是我自己的解决方案。请注意,它需要脚本级全局或类的静态变量以便于参考。我把它写成了类式参考,但只要它能找到数组就可以了。
class Controller {
static $errors = array();
}
$handle = fopen($file) or array_push(Controller::errors,
"File \"{$file}\" could not be opened.");
// ...print the errors in your view
答案 4 :(得分:0)
您可以抛出异常并以您认为合适的方式集中进行错误处理,而不是死亡: - )