在PHP中捕获运行时异常

时间:2009-08-11 08:53:56

标签: php exception-handling

我正在尝试捕获一个运行时异常,该异常将由一个函数抛出,该函数基本上只是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
...

我在这里错过了什么吗?

2 个答案:

答案 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错误没有捕获异常,我不得不将其关闭:|