Izjeme
Nette Database uporablja hierarhijo izjem. Osnovni razred je Nette\Database\DriverException
, ki deduje iz
PDOException
in nudi razširjene možnosti za delo z napakami podatkovne baze:
- Metoda
getDriverCode()
vrača kodo napake od gonilnika podatkovne baze - Metoda
getSqlState()
vrača kodo SQLSTATE - Metodi
getQueryString()
ingetParameters()
omogočata pridobitev prvotne poizvedbe in njenih parametrov
Iz DriverException
dedujejo naslednje specializirane izjeme:
ConnectionException
– signalizira neuspeh povezave s podatkovnim strežnikomConstraintViolationException
– osnovni razred za kršitve podatkovnih omejitev, iz katerega dedujejo:ForeignKeyConstraintViolationException
– kršitev tujega ključaNotNullConstraintViolationException
– kršitev omejitve NOT NULLUniqueConstraintViolationException
– kršitev edinstvenosti vrednosti
Primer lovljenja izjeme UniqueConstraintViolationException
, ki nastane, ko poskušamo vstaviti uporabnika
z e-pošto, ki že obstaja v podatkovni bazi (ob predpostavki, da ima stolpec email edinstven indeks).
try {
$database->query('INSERT INTO users', [
'email' => 'john@example.com',
'name' => 'John Doe',
'password' => $hashedPassword,
]);
} catch (Nette\Database\UniqueConstraintViolationException $e) {
echo 'Uporabnik s tem e-naslovom že obstaja.';
} catch (Nette\Database\DriverException $e) {
echo 'Pri registraciji je prišlo do napake: ' . $e->getMessage();
}