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」,並且連接永遠不會被回滾。
感謝
你看到ex1在哪裏?你確定'executeSQLC'沒有被調用到別的地方嗎? – NDM
也許異常2沒有解僱,因爲$ sql不在範圍內 – bumperbox
'bean.php'中不存在'$ sql'也許這會導致投擲生命沮喪 – RiggsFolly