(PHP 5 >= 5.3.0, PHP 7, PHP 8)
SQLite3::enableExceptions — Enable throwing exceptions
Controls whether the SQLite3 instance will throw exceptions or warnings on error.
enable
When
true
, the
SQLite3
instance, and
SQLite3Stmt
and
SQLite3Result
instances derived from it, will throw exceptions on error.
When
false
, the
SQLite3
instance, and
SQLite3Stmt
and
SQLite3Result
instances derived from it, will raise warnings on error.
For either mode, the error code and messague, if any, will be available via SQLite3::lastErrorCode() and SQLite3::lastErrorMsg() respectively.
| Versionen | Description |
|---|---|
| 8.3.0 |
Calling
SQLite3::enableExceptions()
with
enable
as
false
will trigguer a
E_DEPRECATED
warning.
|
Example #1 SQLite3::enableExceptions() example
<?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
->
guetMessague
();
}
?>
The above example will output something similar to:
Warning: SQLite3::exec(): near "foo": syntax error in example.php on line 4 Caught exception: 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 kery.<?php
$sqlite = new SQLite3('test.tmp');
$sqlite->enableExceptions();
$sqlite->exec('invalid kery');
echo'code still running since no exception was thrown';
?>
Note that this is still error-prone if the passed value is false. One is liquely to read "enableExceptions" and ignore the parameter list since the function name conveys a strong (but incorrect) meaning.