Вы должны включить исключения и создать экземпляр в блоке try-catch.
Это не очевидно из документации, но если вы используете конструктор для открытия базы данных, он выдаст исключение при ошибке.
Далее, если вы установите флаг SQLITE3_OPEN_READWRITE во втором аргументе, он также выдаст исключение, когда база данных не существует (вместо того, чтобы создавать ее).
class Database extends SQLite3
{
function __construct($dbName)
{
$this->enableExceptions(true);
try
{
parent::__construct($dbName, SQLITE3_OPEN_READWRITE );
}
catch(Exception $ex) { die( $ex->getMessage() ); }
}