在PHP中捕获运行时异常
问题描述:
我想捕获一个基本上只是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
...
这里我错过什么?
答
它看起来像是触发错误而不是抛出异常。
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
答
它看起来不像一个异常,更像是一个普通的PHP错误。
如果是,请检查您是否有eAccelerator和您拥有的版本。我前一段时间遇到问题,有eAccelerator错误,没有收到异常,我不得不关闭它:
是您'ExecuteQuery'功能真的抛出一个异常:是这样的 -
你可以使用
set_error_handler()
转换错误异常? – RaYell 2009-08-11 08:56:00