Nette Documentation Preview

syntax
İstisnalar
**********

Nette Veritabanı bir istisnalar hiyerarşisi kullanır. Temel sınıf, `PDOException` adresini genişleten ve veritabanı hatalarıyla çalışmak için gelişmiş işlevsellik sağlayan `Nette\Database\DriverException` adresidir:

- `getDriverCode()` yöntemi, veritabanı sürücüsünden gelen hata kodunu döndürür.
- `getSqlState()` yöntemi SQLSTATE kodunu döndürür.
- Orijinal sorguyu ve parametrelerini almak için `getQueryString()` ve `getParameters()` yöntemlerini kullanabilirsiniz.

 `DriverException` sınıfı aşağıdaki özel istisnalar tarafından genişletilmiştir:

- `ConnectionException` - veritabanı sunucusuna bağlanılamadığını gösterir.
- `ConstraintViolationException` - aşağıdaki istisnaların miras aldığı veritabanı kısıtlama ihlalleri için temel sınıf:
  - `ForeignKeyConstraintViolationException` - yabancı anahtar kısıtlamasının ihlali.
  - `NotNullConstraintViolationException` - NOT NULL kısıtlamasının ihlali.
  - `UniqueConstraintViolationException` - teklik kısıtlamasının ihlali.


Aşağıdaki örnekte, veritabanında zaten var olan bir e-postaya sahip bir kullanıcı eklenmeye çalışıldığında ( `email` sütununun benzersiz bir dizini olduğu varsayılarak) ortaya çıkan `UniqueConstraintViolationException` adresinin nasıl yakalanacağı gösterilmektedir:

```php
try {
	$database->query('INSERT INTO users', [
		'email' => 'john@example.com',
		'name' => 'John Doe',
		'password' => $hashedPassword,
	]);
} catch (Nette\Database\UniqueConstraintViolationException $e) {
	echo 'A user with this email already exists.';

} catch (Nette\Database\DriverException $e) {
	echo 'An error occurred during registration: ' . $e->getMessage();
}
```

İstisnalar

Nette Veritabanı bir istisnalar hiyerarşisi kullanır. Temel sınıf, PDOException adresini genişleten ve veritabanı hatalarıyla çalışmak için gelişmiş işlevsellik sağlayan Nette\Database\DriverException adresidir:

  • getDriverCode() yöntemi, veritabanı sürücüsünden gelen hata kodunu döndürür.
  • getSqlState() yöntemi SQLSTATE kodunu döndürür.
  • Orijinal sorguyu ve parametrelerini almak için getQueryString() ve getParameters() yöntemlerini kullanabilirsiniz.

    DriverException sınıfı aşağıdaki özel istisnalar tarafından genişletilmiştir:

  • ConnectionException – veritabanı sunucusuna bağlanılamadığını gösterir.
  • ConstraintViolationException – aşağıdaki istisnaların miras aldığı veritabanı kısıtlama ihlalleri için temel sınıf:
    • ForeignKeyConstraintViolationException – yabancı anahtar kısıtlamasının ihlali.
    • NotNullConstraintViolationException – NOT NULL kısıtlamasının ihlali.
    • UniqueConstraintViolationException – teklik kısıtlamasının ihlali.

Aşağıdaki örnekte, veritabanında zaten var olan bir e-postaya sahip bir kullanıcı eklenmeye çalışıldığında ( email sütununun benzersiz bir dizini olduğu varsayılarak) ortaya çıkan UniqueConstraintViolationException adresinin nasıl yakalanacağı gösterilmektedir:

try {
	$database->query('INSERT INTO users', [
		'email' => 'john@example.com',
		'name' => 'John Doe',
		'password' => $hashedPassword,
	]);
} catch (Nette\Database\UniqueConstraintViolationException $e) {
	echo 'A user with this email already exists.';

} catch (Nette\Database\DriverException $e) {
	echo 'An error occurred during registration: ' . $e->getMessage();
}