忽略PHP错误,同时仍然打印自定义错误消息

时间:2009-05-19 16:47:49

标签: php error-handling

所以:

@fopen($file);

忽略任何错误并继续

fopen($file) or die("Unable to retrieve file");

忽略错误,杀死程序并打印自定义消息

是否有一种简单的方法可以忽略函数中的错误,打印自定义错误消息而不是终止该程序?

5 个答案:

答案 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 */
}

http://php.net/manual/language.exceptions.php

的更多信息

答案 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)

您可以抛出异常并以您认为合适的方式集中进行错误处理,而不是死亡: - )