1. <legend id='UZ0m7'><style id='UZ0m7'><dir id='UZ0m7'><q id='UZ0m7'></q></dir></style></legend><tfoot id='UZ0m7'></tfoot>
        <bdo id='UZ0m7'></bdo><ul id='UZ0m7'></ul>
      <i id='UZ0m7'><tr id='UZ0m7'><dt id='UZ0m7'><q id='UZ0m7'><span id='UZ0m7'><b id='UZ0m7'><form id='UZ0m7'><ins id='UZ0m7'></ins><ul id='UZ0m7'></ul><sub id='UZ0m7'></sub></form><legend id='UZ0m7'></legend><bdo id='UZ0m7'><pre id='UZ0m7'><center id='UZ0m7'></center></pre></bdo></b><th id='UZ0m7'></th></span></q></dt></tr></i><div id='UZ0m7'><tfoot id='UZ0m7'></tfoot><dl id='UZ0m7'><fieldset id='UZ0m7'></fieldset></dl></div>
    2. <small id='UZ0m7'></small><noframes id='UZ0m7'>

        使用 file_get_contents 进行良好的错误处理

        时间:2023-09-21
          <tbody id='7sDON'></tbody>

          • <tfoot id='7sDON'></tfoot>
          • <i id='7sDON'><tr id='7sDON'><dt id='7sDON'><q id='7sDON'><span id='7sDON'><b id='7sDON'><form id='7sDON'><ins id='7sDON'></ins><ul id='7sDON'></ul><sub id='7sDON'></sub></form><legend id='7sDON'></legend><bdo id='7sDON'><pre id='7sDON'><center id='7sDON'></center></pre></bdo></b><th id='7sDON'></th></span></q></dt></tr></i><div id='7sDON'><tfoot id='7sDON'></tfoot><dl id='7sDON'><fieldset id='7sDON'></fieldset></dl></div>
          • <legend id='7sDON'><style id='7sDON'><dir id='7sDON'><q id='7sDON'></q></dir></style></legend>

          • <small id='7sDON'></small><noframes id='7sDON'>

              • <bdo id='7sDON'></bdo><ul id='7sDON'></ul>
                  本文介绍了使用 file_get_contents 进行良好的错误处理的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  我正在使用具有此功能的 simplehtmldom:

                  I am making use of simplehtmldom which has this funciton:

                  // get html dom form file
                  function file_get_html() {
                      $dom = new simple_html_dom;
                      $args = func_get_args();
                      $dom->load(call_user_func_array('file_get_contents', $args), true);
                      return $dom;
                  }
                  

                  我是这样使用的:

                  $html3 = file_get_html(urlencode(trim("$link")));
                  

                  有时,URL 可能无效,我想处理这个问题.我以为我可以使用 try 和 catch ,但这没有用,因为它没有抛出异常,它只是给出了这样的 php 警告:

                  Sometimes, a URL may just not be valid and I want to handle this. I thought I could use a try and catch but this hasn't worked since it doesn't throw an exception, it just gives a php warning like this:

                  [06-Aug-2010 19:59:42] PHP Warning:  file_get_contents(http://new.mysite.com/ghs 1/) [<a href='function.file-get-contents'>function.file-get-contents</a>]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found  in /home/example/public_html/other/simple_html_dom.php on line 39
                  

                  第 39 行在上面的代码中.

                  Line 39 is in the above code.

                  我如何正确处理这个错误,我可以只使用一个简单的 if 条件,它看起来不像返回一个布尔值.

                  How can i correctly handle this error, can I just use a plain ifcondition, it doesn't look like it returns a boolean.

                  感谢大家的帮助

                  这是一个好的解决方案吗?

                  Is this a good solution?

                  if(fopen(urlencode(trim("$next_url")), 'r')){
                  
                      $html3 = file_get_html(urlencode(trim("$next_url")));
                  
                  }else{
                      //do other stuff, error_logging
                      return false;
                  
                  }
                  

                  推荐答案

                  这里有一个想法:

                  function fget_contents() {
                      $args = func_get_args();
                      // the @ can be removed if you lower error_reporting level
                      $contents = @call_user_func_array('file_get_contents', $args);
                  
                      if ($contents === false) {
                          throw new Exception('Failed to open ' . $file);
                      } else {
                          return $contents;
                      }
                  }
                  

                  基本上是file_get_contents 的包装器.它会在失败时抛出异常.为避免覆盖 file_get_contents 本身,您可以

                  Basically a wrapper to file_get_contents. It will throw an exception on failure. To avoid having to override file_get_contents itself, you can

                  // change this
                  $dom->load(call_user_func_array('file_get_contents', $args), true); 
                  // to
                  $dom->load(call_user_func_array('fget_contents', $args), true); 
                  

                  现在您可以:

                  try {
                      $html3 = file_get_html(trim("$link")); 
                  } catch (Exception $e) {
                      // handle error here
                  }
                  

                  错误抑制(通过使用 @ 或降低 error_reporting 级别是一个有效解决方案.这可能会引发异常,您可以使用它来处理您的错误.有file_get_contents 可能产生警告的原因有很多,PHP 的手册本身建议降低 error_reporting:参见手册

                  Error suppression (either by using @ or by lowering the error_reporting level is a valid solution. This can throw exceptions and you can use that to handle your errors. There are many reasons why file_get_contents might generate warnings, and PHP's manual itself recommends lowering error_reporting: See manual

                  这篇关于使用 file_get_contents 进行良好的错误处理的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:如何处理重复条目的错误? 下一篇:PHP 错误处理:die() Vs trigger_error() Vs throw Exception

                  相关文章

                  最新文章

                    <tfoot id='hJLmy'></tfoot>

                    <small id='hJLmy'></small><noframes id='hJLmy'>

                  1. <legend id='hJLmy'><style id='hJLmy'><dir id='hJLmy'><q id='hJLmy'></q></dir></style></legend>
                    • <bdo id='hJLmy'></bdo><ul id='hJLmy'></ul>
                      <i id='hJLmy'><tr id='hJLmy'><dt id='hJLmy'><q id='hJLmy'><span id='hJLmy'><b id='hJLmy'><form id='hJLmy'><ins id='hJLmy'></ins><ul id='hJLmy'></ul><sub id='hJLmy'></sub></form><legend id='hJLmy'></legend><bdo id='hJLmy'><pre id='hJLmy'><center id='hJLmy'></center></pre></bdo></b><th id='hJLmy'></th></span></q></dt></tr></i><div id='hJLmy'><tfoot id='hJLmy'></tfoot><dl id='hJLmy'><fieldset id='hJLmy'></fieldset></dl></div>