php - 在 PHP 中捕获运行时异常

标签 php exception-handling

我正在 try catch 一个运行时异常,该异常将由一个基本上只是 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
...

我是不是漏掉了什么?

最佳答案

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

您可以使用 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');

关于php - 在 PHP 中捕获运行时异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1259150/

相关文章:

asp.net - 使用内部 SecurityException 抛出异常仅在 ASP.NET MVC 中显示内部异常

php - mysqli 中的多个表

php - 更改多维数组列的顺序

php - 如何避免未定义的偏移错误?

c++ - 从 std::cout 或 std::ofstream(file) 获取 std::ostream

java - 在已检查异常中包装未检查异常

java - Java访问Web服务时URL和URI的区别

javascript - 通过ajax发送javascript数组而不使用jquery

multithreading - BackgroundWorker 中的异步错误处理

java - 在加入其他线程时被打断