PHP无法从包含的文件中捕获错误

时间:2015-10-15 14:22:52

标签: php mysqli try-catch

我尝试在我的数据库不可用时实施回退解决方案。 Somhow我无法发现错误。

致电创建连接:

if(!$this->connection = mysqli_connect(
        $this->host,
        $this->name,
        $this->pass,
        $this->db
    )) { throw new Exception('Unable to connect to Database'); }

init.php包含dbClass

require_once __DIR__ . '/../classes/Database.php';
$db = new Database();
$connection = $db->getConnection();

使用try catch wrap实际使用

try {
        include __DIR__ . '/../out/script/content/config/init_direct.php';
        ... do stuff regulary
}catch (Exception $e) {
        ... do fallback stuff
}

我没有进入catch区块。出于测试目的,我只是将数据库设置为脱机。

1 个答案:

答案 0 :(得分:1)

您的方法存在一些问题

  • 首先,您的问题是调试不充分。你只是假设已抛出异常,但实际上并非如此。
  • 其次,发生这种情况是因为mysqli_connect返回一个对象,而不是您期望的布尔值。
  • 第三,正如你在评论中被告知的那样,错误不是例外,你无法捕捉它们。

无论如何,使用mysqli你不需要手动抛出异常 - 这个扩展可以自己抛出它们,所以,你需要的只是set the proper mode up - 抛出一个将被捕获的异常。