Винятки
Nette Database використовує ієрархію винятків. Базовим класом є
Nette\Database\DriverException
, який розширює PDOException
і надає розширену
функціональність для роботи з помилками бази даних:
- Метод
getDriverCode()
повертає код помилки з драйвера бази даних. - Метод
getSqlState()
повертає код SQLSTATE. - Ви можете використовувати методи
getQueryString()
таgetParameters()
для отримання вихідного запиту та його параметрів.
Клас DriverException
розширено наступними спеціалізованими
винятками:
ConnectionException
– вказує на помилку з'єднання з сервером бази даних.ConstraintViolationException
– базовий клас для порушень обмежень бази даних, від якого успадковуються наступні виключення:ForeignKeyConstraintViolationException
– порушення обмеження зовнішнього ключа.NotNullConstraintViolationException
– порушення обмеження NOT NULL.UniqueConstraintViolationException
– порушення обмеження унікальності.
Наступний приклад демонструє, як перехопити помилку
UniqueConstraintViolationException
, яка виникає при спробі вставити користувача
з email, який вже існує в базі даних (за умови, що стовпець email
має
унікальний індекс):