我有一个PHP脚本偶尔会抛出Fatal error: Uncaught OAuthException:
,具体取决于错误类型。这导致我的PHP脚本停止处理。
我需要在自定义日志文件中捕获该错误并将其写入磁盘。我知道如果我在php.ini中启用错误日志记录,我就能看到它,但我需要能够自己捕获它并将其写入自定义错误日志文件。
这是我收到的错误消息
Fatal error: Uncaught OAuthException: Access to this data is temporarily disabled
thrown in /var/script.php on line 1092
这是它在script.php中引用的一段代码:
protected function throwAPIException($result) {
$e = new FacebookApiException($result);
switch ($e->getType()) {
// OAuth 2.0 Draft 00 style
case 'OAuthException':
// OAuth 2.0 Draft 10 style
case 'invalid_token':
// REST server errors are just Exceptions
case 'Exception':
$message = $e->getMessage();
if ((strpos($message, 'Error validating access token') !== false) ||
(strpos($message, 'Invalid OAuth access token') !== false) ||
(strpos($message, 'An active access token must be used') !== false)
) {
$this->destroySession();
}
break;
}
throw $e;
}
第1092行是$e = new FacebookApiException($result);
有什么方法可以捕获该异常吗?我已尝试在case 'OAuthException':
下添加以下内容,但它无法正常工作:
$message = $e->getMessage();
if (strpos($message, 'Access to this data is temporarily disabled') !== false)
{
$this->destroySession();
file_put_contents($filename, $message);
}
break;
throw $e;
我可以做些什么来解决这个问题?感谢。
答案 0 :(得分:0)
正如@barmar的评论建议你可以使用 throw,try,catch 。这是“现代”,可能是解决这个问题的最好方法。然而,这并不总是可行的,你无法解释所有事情。
设置自定义错误处理程序:set_error_handler('errorHandler');
使用此指令时,如果遇到错误,它将进入您指定的函数。您需要小心,因为errorHandler中的错误会对代码造成破坏性影响。在该功能中,您可以打开日志文件并指定其名称,位置和内容。您甚至可以根据错误类型,位置和消息来条件化多个日志文件。使用'function errorHandler($ severity,$ message,$ file,$ line){}'定义处理程序'参见php.net set_error_handler,