php pdo使用自定义异常处理程序捕获连接异常

时间:2014-05-05 08:23:36

标签: php exception pdo custom-exceptions

我试图在这里实现的是,当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'......

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:0)

您将自定义异常处理程序与自定义异常类混淆。你需要前一个,另一个答案是错误的。

解释。

在您的应用程序代码中,您必须只编写一行:

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

没有多次尝试和东西。只需要运行的代码。

虽然所有处理逻辑都进入handler