簡體   English   中英

無法捕獲SQL異常

[英]Unable to catch an SQL exception

我有一個數據庫類:

<?php

namespace Database\MySQL;

class Database
{
    function __construct(){

        mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

        try {
            $this->Connection = new mysqli(
                "", // Testing with no host
                "", // Testing with no user
                "", // ... no password
                ""  // and no DB name
            );
        }
        catch (mysqli_sql_exception $e) {
            throw $e;
        }
...
?>

但是沒有得到異常,而是出現了致命錯誤: Fatal error: Uncaught exception 'mysqli_sql_exception' with message 'No database selected' in Database.php

我用一個簡單的查詢嘗試了同樣的事情:

try {
    $this->Connection->query("SET NAMES 'utf87'"); //utf87 just for test
}
catch (mysqli_sql_exception $e) {
    throw $e;
}

而且我仍然遇到Fatal error: Uncaught exception

您的問題是,您正在catch異常,但是隨后又將其throw卻沒有catch到該異常。

如果替換,則throw $e; echo "Caught the exception"; ,您將看到您的腳本正在捕獲異常。 但是因為再次拋出它,否則將導致錯誤,除非您具有更高級別的try / catch塊或全局異常處理程序。

而且,正如許多評論中指出的那樣,您需要注意名稱空間。 您需要使用use語句或引用\\mysqli_sql_exception

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM