2014-05-05 85 views
0

什麼即時試圖在這裏實現,是當PDO連接拋出一個異常,我的自定義異常處理程序來處理的消息,並將它,所以我可以用我的自定義異常處理程序捕獲它。PHP PDO捕獲連接異常

try { 
     $mysqli = new PDO('mysql:host='.THOST.';dbname='.TDB.'', TUSER, TPASS); 
    } 

      catch (PDOException $e) { 

       $a = $e->getMessage(); 
      throw new customException ("Failed to connect to MySQL:". $a); 
      die(); 
      } 

     catch (customException $e){ 

       echo $e->errorMessage(); 
     } 

但它返回此錯誤: 致命錯誤:未捕獲的異常 'customException' 有消息......

+0

我看到這裏沒有自定義處理 –

+0

@YourCommonSense 我有一個自定義異常類,這要是在發展只是顯示以某種方式的錯誤,而當它在生產會將錯誤郵寄給我。 –

回答

0

敷在另一個try-catch塊。

try { 
    try { 
    $mysqli = new PDO('mysql:host='.THOST.';dbname='.TDB.'', TUSER, TPASS); 
    } catch(PDOException $e) { 
    $a = $e->getMessage(); 
    throw new customException ("Failed to connect to MySQL:". $a); 
    } 
} catch(customException $e) { 
    echo $e->errorMessage(); 
    // Do what you want 
} 
+0

謝謝你的作品!整個上午都 –

0

你混淆了自定義異常處理與自定義異常類。你需要前者而另一個回答是錯誤的。

解釋。

在應用程序代碼中,你必須只一個一行寫着:

$pdo = new PDO('mysql:host='.THOST.';dbname='.TDB.'', TUSER, TPASS); 

無需多次嘗試之類的東西。只是你需要運行的代碼。

雖然所有的處理邏輯進入handler

+0

道歉絆倒了我,是的,你是正確的,我有一個自定義異常類。 下面的答案的作品時,我嘗試過。請解釋爲什麼它可能不正確。解釋了 –

+0

。順便說一下,電子郵件錯誤是一個非常糟糕的想法。 –