2009-08-11 276 views
3

我想捕获一个基本上只是oci_execute()的包装函数的函数将引发的运行时异常。例如:在PHP中捕获运行时异常

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

然而,异常似乎并不被抓:

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

这里我错过什么?

+0

是您'ExecuteQuery'功能真的抛出一个异常:是这样的 -

你可以使用set_error_handler()转换错误异常? – RaYell 2009-08-11 08:56:00

回答

7

它看起来像是触发错误而不是抛出异常。

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

如果你想将错误转换为异常,你可能想看看PHP自己的ErrorException:http://docs.php.net/manual/en/class.errorexception.php – 2009-08-11 09:04:02

+0

你真棒Greg。 – kta 2016-10-24 05:14:48

0

它看起来不像一个异常,更像是一个普通的PHP错误。

如果是,请检查您是否有eAccelerator和您拥有的版本。我前一段时间遇到问题,有eAccelerator错误,没有收到异常,我不得不关闭它: