Kivételek
A Nette Database kivétel-hierarchiát használ. Az alaposztály a Nette\Database\DriverException
, amely a
PDOException
-ből öröklődik, és kibővített lehetőségeket biztosít az adatbázis-hibák kezelésére:
- A
getDriverCode()
metódus visszaadja az adatbázis-driver hibakódját. - A
getSqlState()
metódus visszaadja az SQLSTATE kódot. - A
getQueryString()
ésgetParameters()
metódusok lehetővé teszik az eredeti lekérdezés és paramétereinek lekérését.
A DriverException
-ből a következő specializált kivételek öröklődnek:
ConnectionException
– jelzi az adatbázis-szerverhez való csatlakozás sikertelenségét.ConstraintViolationException
– alaposztály az adatbázis-korlátozások megsértéséhez, amelyből öröklődnek:ForeignKeyConstraintViolationException
– idegen kulcs megsértése.NotNullConstraintViolationException
– NOT NULL korlátozás megsértése.UniqueConstraintViolationException
– érték egyediségének megsértése.
Példa a UniqueConstraintViolationException
kivétel elkapására, amely akkor következik be, ha olyan e-mail
címmel próbálunk meg felhasználót beszúrni, amely már létezik az adatbázisban (feltéve, hogy az email oszlopnak egyedi
indexe van).
try {
$database->query('INSERT INTO users', [
'email' => 'john@example.com',
'name' => 'John Doe',
'password' => $hashedPassword,
]);
} catch (Nette\Database\UniqueConstraintViolationException $e) {
echo 'Már létezik felhasználó ezzel az e-mail címmel.';
} catch (Nette\Database\DriverException $e) {
echo 'Hiba történt a regisztráció során: ' . $e->getMessage();
}