在try-catch中显示WPDB错误不起作用


Displaying WPDB error in try catch not working?

我正在尝试创建一个将使用外部api和wpdb类的类,但是我在try-catch块中已经遇到了问题,请确认以下内容是正确的:

<?php
require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-config.php' );
require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-includes/wp-db.php' );
class LoLApi
{
  private $database;
  public function __construct()
  {
    try {
      $this->database = new wpdb('user', 'pass', 'table', '127.0.0.1');
      $this->database->show_errors();
    } catch (Exception $e) {
      return $e->getMessage();
    }
  }
}
?>

在另一页:

<?php
  session_start();
  require 'includes/lolapi.class.php';
  $api = new LoLApi;
  exit();
?>

您应该检查它是否返回WP_Error对象。如果WP_Error类不存在,它只会消亡并转储一条错误消息。它在任何地方都没有抛出异常。

如果包含wp-load.php,则会有wp_Error类可用,并且可以在返回的数据中检查它。您还可以扩展wpdb类并重写db_connect方法,以引发适当的异常,而不是在连接失败时终止脚本。