2016-08-09 85 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变量搞乱,不知道这是原因,但事情似乎是现在的工作。谢谢你们。