2016-08-09 124 views
1

我有一個簡單的程序應該引發兩個異常,第二個是重新拋出第一個異常。但是,只有第一個異常被拋出。php異常不起作用

這是我的代碼:

在dao.php

function executeSQLC($cn, $sql) {  
    $rs = odbc_exec($cn, $sql); 
    if($rs == false) { 
     throw new Exception("ex1: ".odbc_error()); 
    } 

    return $rs;  
} 

在bean.php

include("dao.php"); 

$conn = odbc_connect("xxx", "xxxx", "xxxx"); 
odbc_autocommit($conn, FALSE); 
$sql ="invalid sql"; 
try { 
    executeSQLC($conn, $sql); 
    odbc_commit($conn); 
    odbc_close($conn); 
} catch(Exception $e) { 
    odbc_rollback($conn); 
    throw new Exception("ex2: ".$e->getMessage(). " " .$sql);  
} 

我看 「EX1」,所以我覺得第一個例外,在dao,正在被拋出,但是,我看不到「ex2」,並且連接永遠不會被回滾。

感謝

+0

你看到ex1在哪裏?你確定'executeSQLC'沒有被調用到別的地方嗎? – NDM

+0

也許異常2沒有解僱,因爲$ sql不在範圍內 – bumperbox

+0

'bean.php'中不存在'$ sql'也許這會導致投擲生命沮喪 – RiggsFolly

回答

0

好了,其他的一些代碼在呼喚/與$ SQL變量搞亂,不知道這是原因,但事情似乎是現在的工作。謝謝你們。