【问题标题】:PHP - how can I mute/replace this Exception handler?PHP - 如何静音/替换此异常处理程序?
【发布时间】:2011-03-22 12:18:45
【问题描述】:

我正在使用 Facebook PHP API,大约 40 次中有 1 次将这个异常转储到我的 web 应用程序中:

未捕获的 CurlException:56:SSL 读取: 错误:00000000:lib(0):func(0):reason(0), errno 104 在第 638 行抛出 ...

我不是在寻找导致异常的解决方案(已经在解决这个问题),但现在我想将其从在页面上转储异常更改为告诉用户刷新页面或自动刷新页面。

在这个文件中抛出异常:https://github.com/facebook/php-sdk/blob/master/src/facebook.php

这是我想暂时更改为刷新/刷新指令的代码:

    if (curl_errno($ch) == 60) { // CURLE_SSL_CACERT
  self::errorLog('Invalid or no certificate authority found, using bundled information');
  curl_setopt($ch, CURLOPT_CAINFO,
              dirname(__FILE__) . '/fb_ca_chain_bundle.crt');
  $result = curl_exec($ch);
}

if ($result === false) {
  $e = new FacebookApiException(array(
    'error_code' => curl_errno($ch),
    'error'      => array(
      'message' => curl_error($ch),
      'type'    => 'CurlException',
    ),
  ));
  curl_close($ch);
  throw $e;
}

【问题讨论】:

    标签: php facebook


    【解决方案1】:

    您可以使用TRY .. CATCH 捕捉CurlException,或FacebookApiException。 或者使用set_exception_handler 来捕获任何未捕获的异常。

    【讨论】:

      【解决方案2】:

      正如草莓所说,您可以停止抛出异常。如果需要在那里抛出异常,您可以将调用它的代码放在try-catch 中,并根据需要处理异常。

      另一个选择是使用函数set_exception_handler。当抛出异常但没有捕获它时,将调用此函数。

      【讨论】:

        【解决方案3】:

        您在导致倾销的最后一行抛出异常 $e。相反,你可以做类似的事情

        echo "ERROR: " . $e->getMessage();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-04-12
          • 2013-08-23
          • 2014-02-26
          • 1970-01-01
          • 2016-03-06
          • 2012-03-04
          相关资源
          最近更新 更多