我正在为我的应用程序编写一个用户定义的PHP异常处理程序,并希望它以不同的方式处理不同类型的异常。
例如,如果应用程序抛出未捕获的PDOException,我的处理程序会向我发送一封电子邮件,但如果抛出未捕获的异常,则会执行另一个操作。
目前处理程序如下所示:
function exception_handler($po_exception) {
// If this is a PDO Exception send an email.
example_email_function('There was a database problem', $po_exception->getMessage());
// If this is any other type of Exception, let the user know something has gone wrong.
echo "Something went wrong.\n";
}
答案 0 :(得分:1)
http://www.php.net/manual/en/language.operators.type.php
但是,我建议不要采取这种粗心行为。
如果您想监控您的网站是否正常运行,请使用一些外部服务。
对于所有偶然的错误,只需监控错误日志。
另外,不要使用getMessage(),而应使用$ po_exception本身。
答案 1 :(得分:0)
要确认,回答我的问题的解决方案位于@YourCommonSense提供的链接中:http://www.php.net/manual/en/language.operators.type.php,结果代码为:
function exception_handler($po_exception) {
if ($po_exception instanceof PDOException) {
// If this is a PDO Exception, pass it to the SQL error handler.
example_email_function('There was a database problem', $po_exception->getMessage());
}
else {
// Do non database Exception handling here.
}
// If this is any other type of Exception, let the user know something has gone wrong.
echo "Something went wrong.\n";
}