2013-08-01 34 views
3

好例外,所以我不能趕上exeption:PDO無法捕捉其拋出

require_once 'config/config.php'; 
try { 
    $dbh = new PDO('mysql:host='.DB_HOST.';dbname='.DB_DATABASE, DB_USER, DB_PASS,array(
     PDO::ATTR_PERSISTENT => true, 
     PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION 
    )); 
} catch (PDOException $e) { 
    print "Unable to connect!: " . $e->getMessage() . BR; 
    die(); 
} 

try { 
    $stmt = $dbh->prepare("SELECT id,email FROM no_table ORDER BY id DESC LIMIT 5"); 
    $stmt->execute(); 
    $stmt->bindColumn(1, $id, PDO::PARAM_INT); 
    $stmt->bindColumn('email', $email, PDO::PARAM_STR); 
    while ($row = $stmt->fetch(PDO::FETCH_BOUND)) { 
     echo $id . "\t" . $email . BR; 
    } 
} catch (PDOException $e) { 
    echo "Failed: " . $e->getMessage(); 
} 

好吧,我連我有一個錯誤的語法(沒有任何no_table)它拋出例外,但我無法抓住它。在瀏覽器中我看到這一點:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S02]: 
Base table or view not found: 1146 Table 'no_table' doesn't exist' in 'somepath' 
PDOStatement->execute() #1 {main} thrown in some.php on line 15 

拋出異常,我無法抓住它,但如果我把$stmt->execute();之間的另一種嘗試捕捉它抓住了它。

我的PHP版本5.3.14

+0

除了這個問題 - 你爲什麼要抓住它? –

+0

我無法重現您的代碼。它確實爲我抓到 –

+0

我無法重現此問題。 php版本5.4 – DevZer0

回答

8

你去過這個項目也許使用命名空間的類? 如果是這樣,請嘗試在 「捕捉」 語句中使用的

\PDOException 

代替

PDOException 

。 我剛剛得到類似的問題,此舉有所幫助。