Nette Documentation Preview

syntax
İ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ür
- `getSqlState()` metodu, SQLSTATE kodunu döndürür
- `getQueryString()` ve `getParameters()` 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ı belirtir
- `ConstraintViolationException` - veritabanı kısıtlamalarının ihlali için temel sınıf, bundan miras alanlar:
  - `ForeignKeyConstraintViolationException` - yabancı anahtar ihlali
  - `NotNullConstraintViolationException` - NOT NULL kısıtlaması ihlali
  - `UniqueConstraintViolationException` - 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).

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

İ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ür
  • getSqlState() metodu, SQLSTATE kodunu döndürür
  • getQueryString() ve getParameters() 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ı belirtir
  • ConstraintViolationException – veritabanı kısıtlamalarının ihlali için temel sınıf, bundan miras alanlar:
    • ForeignKeyConstraintViolationException – yabancı anahtar ihlali
    • NotNullConstraintViolationException – NOT NULL kısıtlaması ihlali
    • UniqueConstraintViolationException – 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();
}