PHP - 如何将此异常处理程序静音/替换?

时间:2011-03-22 12:18:46

标签: php facebook

我正在使用Facebook PHP API,并且在40年左右它将此异常转储到我的webapp上:

  

未捕获的CurlException:56:SSL读取:   错误:00000000:LIB(0):函数(0):原因(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;
}

3 个答案:

答案 0 :(得分:1)

斯特拉布里说,你可以停止抛出异常。如果需要抛出异常,可以将调用它的代码放在try-catch内,并根据需要处理异常。

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

答案 1 :(得分:1)

您可以使用TRY .. CATCH来抓住CurlExceptionFacebookApiException。 或者使用set_exception_handler来捕获任何未捕获的异常。

答案 2 :(得分:0)

您在导致转储的最后一行中抛出异常$ e。相反,你可以做类似

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