2016-08-09 6 views
1

Ich habe ein einfaches Programm, das zwei Ausnahmen auslösen sollte, die zweite ist eine Wiederholung der ersten. Es wird jedoch nur die erste Ausnahme ausgelöst.php Ausnahme funktioniert nicht

Dies ist mein Code:

In dao.php

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

    return $rs;  
} 

In 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);  
} 

I "EX1" zu sehen, so denke ich, die erste Ausnahme, bei der dao, wird geworfen, aber ich kann "ex2" nicht sehen und die Verbindung wird nie zurückgesetzt.

Dank

+0

Sie sehen ex1 wo? Bist du sicher, dass 'executeSQLC' nicht woanders aufgerufen wird? – NDM

+0

Vielleicht Exception2 feuert nicht, weil $ sql ist nicht im Bereich – bumperbox

+0

Und '$ sql' existiert nicht in' bean.php' vielleicht wird das dazu führen, dass der Wurf mit dem Leben verärgert – RiggsFolly

Antwort

0

Ok, einige andere Code anrufen/mit den $ SQL-Variablen durcheinander, nicht sicher, dass dies die Ursache war, aber die Dinge scheinen jetzt zu arbeiten. Danke Leute.