file_get_contents处理错误的好方法

时间:2013-04-21 11:53:36

标签: php html

我正在尝试错误处理file_get_contents方法,因此即使用户输入了错误的网站,它也会回显错误消息而不是非专业

  

警告:file_get_contents(sidiowdiowjdiso):无法打开流:   在第6行的C:\ xampp \ htdocs \ test.php中没有这样的文件或目录

我想如果我试一试并抓住它就能捕捉错误但是没有用。

try  
{  
$json = file_get_contents("sidiowdiowjdiso", true); //getting the file content
}  
catch (Exception $e)  
{  
 throw new Exception( 'Something really gone wrong', 0, $e);  
}  

4 个答案:

答案 0 :(得分:10)

尝试使用curl_error而非file_get_contents:

的cURL
<?php
// Create a curl handle to a non-existing location
$ch = curl_init('http://404.php.net/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$json = '';
if( ($json = curl_exec($ch) ) === false)
{
    echo 'Curl error: ' . curl_error($ch);
}
else
{
    echo 'Operation completed without any errors';
}

// Close handle
curl_close($ch);
?>

答案 1 :(得分:6)

file_get_contents不会抛出异常,而是返回false,因此您可以检查返回的值是否为false:

$json = file_get_contents("sidiowdiowjdiso", true);
if ($json === false) {
    //There is an error opening the file
}

这样您仍然会收到警告,如果要将其删除,则需要在@前加file_get_contents。 (这被认为是一种不好的做法)

$json = @file_get_contents("sidiowdiowjdiso", true);

答案 2 :(得分:5)

您可以执行以下任何操作:

为所有未处理的例外设置全局错误处理程序(也将处理警告):http://php.net/manual/en/function.set-error-handler.php

或者通过检查file_get_contents函数的返回值(使用===运算符,因为它将在失败时返回布尔值false),然后相应地管理错误消息,并通过预先添加a来禁用函数的错误报告“@”喜欢这样:

$json = @file_get_contents("file", true);
if($json === false) {
// error handling
} else {
// do something with $json
}

答案 3 :(得分:-1)

作为问题的解决方案,请尝试执行以下代码段

 try  
{  
  $json = @file_get_contents("sidiowdiowjdiso", true); //getting the file content
  if($json==false)
  {
     throw new Exception( 'Something really gone wrong');  
  }
}  
catch (Exception $e)  
{  
  echo $e->getMessage();  
}