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();
}