【问题标题】:Separate exception handler for PDOPDO 的单独异常处理程序
【发布时间】:2013-05-29 09:57:52
【问题描述】:

在我的 PHP 代码中,我有几种类型的异常。一个是“正常”Exception,另一个是PDOException。我正在使用set_exception_handler($handler) 自动捕获异常。

有什么方法可以让我为 Exception 和 PDOException 获取单独的处理程序?
如果没有,我可以在处理程序中检查异常的类型吗?

【问题讨论】:

  • @YourCommonSense 因为我想以除异常之外的其他方式处理 PDOException。我说了什么蠢话吗?
  • 我很明白这一点。为什么要以其他方式处理 PDOExceptions?或者更确切地说,您将如何处理 PDO 异常?
  • @YourCommonSense 我想将 PDOExceptions 记录到一个文件中,同时我想向用户输出一些正常异常的东西。

标签: php pdo exception-handling


【解决方案1】:

我认为您应该有一个“全局”处理程序和分支。

set_exception_handler(function ($exception) {
  if ($exception instanceof PDOException) {
    handle_pdo_exception($exception);
    return;
  }
  log($exception);
});

【讨论】:

    【解决方案2】:

    感谢您澄清您的问题。

    我认为您的要求是错误的假设。

    事实上,任何一个正常的异常都需要记录到一个普通的error_log 并且 PDOexception 必须触发一个向用户显示的通用 500 错误页面。将这些问题分开是没有意义的。因此,您可以使用通用异常处理程序来处理代码中的所有异常事件。

    【讨论】:

    • 但是如何区分这两者呢?
    • 另一个答案解释了它。虽然我的回答的重点是区分这些(实际上不止两种)异常类型是没有意义的。每个人都必须被记录,但每个人都必须触发一个通用的 503 错误页面才能显示。
    猜你喜欢
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-04
    • 2015-02-14
    • 1970-01-01
    相关资源
    最近更新 更多