PHP Conference Nagoya 2025

SQLite3::enableExceptions

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

SQLite3::enableExceptions Включает генерацию исключений

Описание

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

Метод определяет, будет ли экземпляр SQLite3 выбрасывать исключения или предупреждения об ошибке.

Список параметров

enable

Когда передано значение true, экземпляр SQLite3 и экземпляры SQLite3Stmt и SQLite3Result, производные от него, будут выбрасывать исключения в случае возникновения ошибки.

Когда передано значение false, экземпляр SQLite3 и экземпляры SQLite3Stmt и SQLite3Result, производные от него, будут генерировать предупреждения в случае возникновения ошибки.

В любом случае, код ошибки и сообщение, если есть, будут доступны через методы SQLite3::lastErrorCode() и SQLite3::lastErrorMsg() соответственно.

Возвращаемые значения

Метод возвращает старое значение; true, если исключения включены, иначе false.

Список изменений

Версия Описание
8.3.0 Метод SQLite3::enableExceptions() выдаст предупреждение уровня E_DEPRECATED, если при вызове метода значение параметра enable равно false.

Примеры

Пример #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
Поймано исключение: near "bar": syntax error
Добавить

Примечания пользователей 1 note

up
16
Yoann
5 years ago
Be sure to note the poorly chosen name and default value.

The following snippet does not throw an exception, despite calling a function with the name "enableExceptions" immediately prior to the bad query.
<?php
$sqlite
= new SQLite3('test.tmp');
$sqlite->enableExceptions();
$sqlite->exec('invalid query');
echo
'code still running since no exception was thrown';
?>

Note that this is still error-prone if the passed value is false. One is likely to read "enableExceptions" and ignore the parameter list since the function name conveys a strong (but incorrect) meaning.
To Top