PHP Conference Japan 2024

SQLite3::enableExceptions

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

SQLite3::enableExceptions启用抛出异常

描述

public SQLite3::enableExceptions(bool $enable = false): bool

控制SQLite3实例是否在发生错误时抛出异常或警告。

参数

enable

当为true时,SQLite3实例以及从中派生的SQLite3StmtSQLite3Result实例将在发生错误时抛出异常。

当为false时,SQLite3实例以及从中派生的SQLite3StmtSQLite3Result实例将在发生错误时发出警告。

对于这两种模式,错误代码和消息(如有)可分别通过SQLite3::lastErrorCode()SQLite3::lastErrorMsg()获得。

返回值

返回旧值;如果启用了异常,则返回true,否则返回false

变更日志

版本 描述
8.3.0 使用enable参数为false调用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
'Caught exception: ' . $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
'code still running since no exception was thrown';
?>

请注意,如果传递的值为false,这仍然容易出错。人们可能会阅读“enableExceptions”并忽略参数列表,因为函数名称传达了一个强烈(但错误的)含义。
To Top