[英]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.