2024 年日本 PHP 研討會

SQLite3::enableExceptions

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3::enableExceptions 啟用拋出例外

說明

公開 SQLite3::enableExceptions(布林值 $enable = false): 布林值

控制 SQLite3 實例是否在發生錯誤時拋出例外或警告。

參數

enable

當設為 true 時,SQLite3 實例,以及從它衍生的 SQLite3StmtSQLite3Result 實例,將在發生錯誤時拋出例外。

當設為 false 時,SQLite3 實例,以及從它衍生的 SQLite3StmtSQLite3Result 實例,將在發生錯誤時發出警告。

無論哪種模式,錯誤碼和錯誤訊息(如果有的話)都可以分別透過 SQLite3::lastErrorCode()SQLite3::lastErrorMsg() 取得。

回傳值

返回舊值;如果啟用了例外,則返回 true,否則返回 false

更新日誌

版本 說明
8.3.0 使用 false 作為 enable 呼叫 SQLite3::enableExceptions() 將觸發 E_DEPRECATED 警告。

範例

範例 #1 SQLite3::enableExceptions() 範例

<?php
$sqlite
= new SQLite3(':memory:');
try {
$sqlite->exec('create table foo');
$sqlite->enableExceptions(true);
$sqlite->exec('create table bar');
} catch (
Exception $e) {
echo
'攔截到例外:' . $e->getMessage();
}
?>

上述範例將輸出類似以下的內容

Warning: SQLite3::exec(): near "foo": syntax error in example.php on line 4
Caught exception: near "bar": syntax error
新增註解

使用者貢獻的註解 1 則註解

16
Yoann
5 年前
請務必注意這個名稱和預設值的糟糕選擇。

以下程式碼片段即使在執行錯誤查詢之前立即呼叫了名為「enableExceptions」的函式,也不會擲出例外。
<?php
$sqlite
= new SQLite3('test.tmp');
$sqlite->enableExceptions();
$sqlite->exec('invalid query');
echo
'程式碼仍在執行,因為沒有擲出例外';
?>

請注意,如果傳遞的值為 false,這仍然容易出錯。人們可能會讀到「enableExceptions」並忽略參數列表,因為函式名稱傳達了很強(但不正確)的含義。
To Top