我正在尝试捕获一个运行时异常,该异常将由一个函数抛出,该函数基本上只是oci_execute()的包装函数。例如:
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 :(得分:7)
它看起来像是在触发错误而不是抛出异常。
您可以使用set_error_handler()
将错误转换为异常 - 如下所示:
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 :(得分:0)
它看起来不像是一个异常,更像是一个普通的PHP错误。
如果是,请检查您是否拥有eAccelerator以及您拥有的版本。我前一段时间遇到过问题,有eAccelerator错误没有捕获异常,我不得不将其关闭:|