2012-04-03 23 views
0

我從Facebook SDK得到這個異常:如何從Facebook sdk捕獲並更改拋出的異常消息?

Fatal error: Uncaught OAuthException: (#506) Duplicate status message thrown in [...] src/base_facebook.php on line 1033 

我如何捕獲的異常將打印此消息之前? 我想改變它的東西是這樣的:

應用程序的響應仍然是相同的,所以我們不能在你的牆上發佈一遍:)

順便說一句,有是一個處理所有異常的方法(下面),我只希望這個新消息只針對那個特定的情況。

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': 
     $message = $e->getMessage(); 
     if ((strpos($message, 'Error validating access token') !== false) || 
      (strpos($message, 'Invalid OAuth access token') !== false)) { 
     $this->setAccessToken(null); 
     $this->user = 0; 
     $this->clearAllPersistentData(); 
     } 
    } 

    throw $e; 
    } 

謝謝。

回答

2

你把那個被扔try塊內的異常的代碼,然後用catch塊捕獲它:

try 
{ 
    // Code goes here 
} 

catch (OAuthException $e) 
{ 
    // Stuff to do with exception 
} 
+0

肯定,但問題是,有一個處理所有的異常和方法對於所有例外情況,將顯示您正在說的消息的方式。 – Bagata 2012-04-03 09:45:19

+0

我不確定你的意思。上面的代碼將捕獲'try'塊中拋出的任何'OAuthException'。這不是你想要的嗎? – MichaelRushton 2012-04-03 09:46:52

+0

我只想捕捉「重複狀態消息」的情況。你有看到? – Bagata 2012-04-03 09:48:46