İstisnalar
Nette Database bir istisna hiyerarşisi kullanır. Temel sınıf Nette\Database\DriverException'dır, bu sınıf
PDOException'dan miras alır ve veritabanı hatalarıyla çalışmak için genişletilmiş yetenekler sağlar:
getDriverCode()metodu, veritabanı sürücüsünden hata kodunu döndürürgetSqlState()metodu, SQLSTATE kodunu döndürürgetQueryString()vegetParameters()metotları, orijinal sorguyu ve parametrelerini almanızı sağlar
DriverException'dan aşağıdaki özel istisnalar miras alır:
ConnectionException– veritabanı sunucusuna bağlantı hatasını belirtirConstraintViolationException– veritabanı kısıtlamalarının ihlali için temel sınıf, bundan miras alanlar:ForeignKeyConstraintViolationException– yabancı anahtar ihlaliNotNullConstraintViolationException– NOT NULL kısıtlaması ihlaliUniqueConstraintViolationException– değer benzersizliği ihlali
Veritabanında zaten var olan bir e-postaya sahip bir kullanıcı eklemeye çalıştığımızda oluşan
UniqueConstraintViolationException istisnasını yakalama örneği (e-posta sütununun benzersiz bir dizine sahip
olduğu varsayılarak).
try {
$database->query('INSERT INTO users', [
'email' => 'john@example.com',
'name' => 'John Doe',
'password' => $hashedPassword,
]);
} catch (Nette\Database\UniqueConstraintViolationException $e) {
echo 'Bu e-posta adresine sahip bir kullanıcı zaten var.';
} catch (Nette\Database\DriverException $e) {
echo 'Kayıt sırasında bir hata oluştu: ' . $e->getMessage();
}