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