mpe*_*pen 5 php mysql exception-handling exception
在我正在研究的项目中,我已经挖了一个洞.我有这个庞大的项目(成千上万行),并且到处都有MySQL错误.我现在正在清理它们.
我有这个所有查询都经过的数据库类,所以我所做的就是每当出现SQL错误时,我现在就抛出一个异常.问题是我无法执行停止.它必须像往常一样继续,并且只记录异常,以便我可以跟踪它们并一次修复一个.
我希望set_exception_handler能做我想做的事,但是文档特别说它会在调用我的处理程序后停止执行.那么我该如何解决这个问题呢?
异常可以暂停当前函数,但后来我希望它退出函数,可能返回null或false,然后继续正常,但我需要它来调用我的全局异常处理程序.
澄清:
我想从我的数据库类中抛出异常(每当出现SQL错误时).然后,我想记录此错误和/或在屏幕上显示一条消息,直到我可以修复SQL错误,或者在try/catch中包装违规行.我不希望它停止执行.如果我只是调用某个error_handler()函数而不是抛出异常,那么我就无法理解它.如果我立即捕获它(也在DB类中),那么我无法在堆栈中进一步捕获它(除非我重新抛出它,但我们又回到停止执行).
我想我找到了解决方法。我可以直接使用异常调用我的处理程序,而不是抛出异常:
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)
| 归档时间: |
|
| 查看次数: |
1408 次 |
| 最近记录: |