抛出异常而不停止执行?

mpe*_*pen 5 php mysql exception-handling exception

在我正在研究的项目中,我已经挖了一个洞.我有这个庞大的项目(成千上万行),并且到处都有MySQL错误.我现在正在清理它们.

我有这个所有查询都经过的数据库类,所以我所做的就是每当出现SQL错误时,我现在就抛出一个异常.问题是我无法执行停止.它必须像往常一样继续,并且只记录异常,以便我可以跟踪它们并一次修复一个.

我希望set_exception_handler能做我想做的事,但是文档特别说它会在调用我的处理程序后停止执行.那么我该如何解决这个问题呢?

异常可以暂停当前函数,但后来我希望它退出函数,可能返回null或false,然后继续正常,但我需要它来调用我的全局异常处理程序.


澄清:

我想从我的数据库类中抛出异常(每当出现SQL错误时).然后,我想记录此错误和/或在屏幕上显示一条消息,直到我可以修复SQL错误,或者在try/catch中包装违规行.我不希望它停止执行.如果我只是调用某个error_handler()函数而不是抛出异常,那么我就无法理解它.如果我立即捕获它(也在DB类中),那么我无法在堆栈中进一步捕获它(除非我重新抛出它,但我们又回到停止执行).

mpe*_*pen 0

我想我找到了解决方法。我可以直接使用异常调用我的处理程序,而不是抛出异常:

global_exception_handler(new MySqlException($error_message)); 
Run Code Online (Sandbox Code Playgroud)

这样我的处理程序仍然会被调用,但执行会继续。

然后,仍然可以使用相同的异常处理程序来捕获实际引发的所有其他异常:

function _global_exception_handler($e) {
    // log error here
}

set_exception_handler('global_exception_handler');
Run Code Online (Sandbox Code Playgroud)