(PHP 5 >= 5.3.0, PHP 7, PHP 8)
SQLite3::enableExceptions — Включает генерацию исключений
Метод определяет, будет ли экземпляр 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
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.