Nette Documentation Preview

syntax
Ausnahmen
*********

Nette Database verwendet eine Hierarchie von Ausnahmen. Die Basisklasse ist `Nette\Database\DriverException`, die `PDOException` erweitert und erweiterte Funktionen für die Arbeit mit Datenbankfehlern bietet:

- Die Methode `getDriverCode()` gibt den Fehlercode des Datenbanktreibers zurück.
- Die Methode `getSqlState()` gibt den SQLSTATE-Code zurück.
- Sie können die Methoden `getQueryString()` und `getParameters()` verwenden, um die ursprüngliche Abfrage und ihre Parameter abzurufen.

Die Klasse `DriverException` wird um die folgenden spezialisierten Ausnahmen erweitert:

- `ConnectionException` - zeigt eine fehlgeschlagene Verbindung zum Datenbankserver an.
- `ConstraintViolationException` - die Basisklasse für Datenbankeinschränkungsverletzungen, von der die folgenden Ausnahmen erben:
  - `ForeignKeyConstraintViolationException` - Verstoß gegen eine Fremdschlüssel-Beschränkung.
  - `NotNullConstraintViolationException` - Verstoß gegen eine NOT NULL-Beschränkung.
  - `UniqueConstraintViolationException` - Verletzung einer Einzigartigkeitsbeschränkung.


Das folgende Beispiel zeigt, wie ein `UniqueConstraintViolationException` abgefangen werden kann, wenn versucht wird, einen Benutzer mit einer E-Mail einzufügen, die bereits in der Datenbank vorhanden ist (vorausgesetzt, die Spalte `email` hat einen eindeutigen Index):

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

Ausnahmen

Nette Database verwendet eine Hierarchie von Ausnahmen. Die Basisklasse ist Nette\Database\DriverException, die PDOException erweitert und erweiterte Funktionen für die Arbeit mit Datenbankfehlern bietet:

  • Die Methode getDriverCode() gibt den Fehlercode des Datenbanktreibers zurück.
  • Die Methode getSqlState() gibt den SQLSTATE-Code zurück.
  • Sie können die Methoden getQueryString() und getParameters() verwenden, um die ursprüngliche Abfrage und ihre Parameter abzurufen.

Die Klasse DriverException wird um die folgenden spezialisierten Ausnahmen erweitert:

  • ConnectionException – zeigt eine fehlgeschlagene Verbindung zum Datenbankserver an.
  • ConstraintViolationException – die Basisklasse für Datenbankeinschränkungsverletzungen, von der die folgenden Ausnahmen erben:
    • ForeignKeyConstraintViolationException – Verstoß gegen eine Fremdschlüssel-Beschränkung.
    • NotNullConstraintViolationException – Verstoß gegen eine NOT NULL-Beschränkung.
    • UniqueConstraintViolationException – Verletzung einer Einzigartigkeitsbeschränkung.

Das folgende Beispiel zeigt, wie ein UniqueConstraintViolationException abgefangen werden kann, wenn versucht wird, einen Benutzer mit einer E-Mail einzufügen, die bereits in der Datenbank vorhanden ist (vorausgesetzt, die Spalte email hat einen eindeutigen Index):

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