SQLite3::enableExceptions
(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() で利用できます。
変更履歴
バージョン | 説明 |
---|---|
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
+add a note
User Contributed Notes 1 note
Yoann ¶
6 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.
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google