Wyjątki
Nette Database wykorzystuje hierarchię wyjątków. Klasą bazową jest Nette\Database\DriverException
, która
rozszerza PDOException
i zapewnia rozszerzoną funkcjonalność do pracy z błędami bazy danych:
- Metoda
getDriverCode()
zwraca kod błędu ze sterownika bazy danych. - Metoda
getSqlState()
zwraca kod SQLSTATE. - Możesz użyć metod
getQueryString()
igetParameters()
, aby pobrać oryginalne zapytanie i jego parametry.
Klasa DriverException
jest rozszerzona o następujące wyspecjalizowane wyjątki:
ConnectionException
– wskazuje na niepowodzenie połączenia z serwerem bazy danych.ConstraintViolationException
– klasa bazowa dla naruszeń ograniczeń bazy danych, z której dziedziczą następujące wyjątki:ForeignKeyConstraintViolationException
– naruszenie ograniczenia klucza obcego.NotNullConstraintViolationException
– naruszenie ograniczenia NOT NULL.UniqueConstraintViolationException
– naruszenie ograniczenia unikalności.
Poniższy przykład pokazuje, jak wychwycić UniqueConstraintViolationException
, co dzieje się podczas próby
wstawienia użytkownika z adresem e-mail, który już istnieje w bazie danych (zakładając, że kolumna email
ma
unikalny indeks):