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 使用 enablefalse 调用 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 则注释

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