2009-08-11 4 views
3

J'essaye d'attraper une exception d'exécution qui sera levée par une fonction qui est simplement une fonction d'encapsulation pour oci_execute(). Par exemple:Attraper une exception d'exécution en PHP

try { 
    $SQL = "INSERT"; 
    ExecuteQuery($SQL); 
} catch (Exception $e) { 
    echo "<p>There was an error.</p>"; 
    echo $e->getMessage(); 
} 

Toutefois, l'exception ne semble pas être pris:

... 
ociexecute() [function.ociexecute]: ORA-00925: missing INTO keyword 
... 

Suis-je manque quelque chose ici?

+0

est votre fonction 'ExecuteQuery' lancer vraiment une exception? – RaYell

Répondre

7

Il semblerait que cela déclenche une erreur plutôt qu'une exception.

Vous pouvez convertir des erreurs à des exceptions en utilisant set_error_handler() - quelque chose comme ceci:

function errorHandler($number, $string, $file = 'Unknown', $line = 0, $context = array()) 
{ 
    if (($number == E_NOTICE) || ($number == E_STRICT)) 
     return false; 

    if (!error_reporting()) 
     return false; 

    throw new Exception($string, $number); 

    return true; 
} 

set_error_handler('errorHandler'); 
+1

Si vous voulez convertir les erreurs en exceptions, vous pouvez jeter un oeil à la propre ErrorException de PHP: http://docs.php.net/manual/fr/class.errorexception.php –

+0

Vous êtes génial Greg. – kta

0

Cela ne semble pas être une exception, plutôt une simple erreur PHP.

Si tel est le cas, vérifiez si vous avez eAccelerator et quelle version vous possédez. J'ai eu un problème il y a un certain temps, il y avait un bug eAccelerator qui n'attrapait pas Exception et je devais l'éteindre: |

Questions connexes