Nette Documentation Preview

syntax
Ausnahmen
*********

Nette Database verwendet eine Hierarchie von Ausnahmeklassen. Die Basisklasse ist `Nette\Database\DriverException`, die von `PDOException` erbt und erweiterte Möglichkeiten zur Fehlerbehandlung bei Datenbankfehlern bietet:

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

Von `DriverException` erben die folgenden spezialisierten Ausnahmeklassen:

- `ConnectionException` - signalisiert einen Verbindungsfehler zum Datenbankserver.
- `ConstraintViolationException` - Basisklasse für Verletzungen von Datenbankbeschränkungen, von der erben:
  - `ForeignKeyConstraintViolationException` - Verletzung eines Fremdschlüssels.
  - `NotNullConstraintViolationException` - Verletzung einer NOT NULL-Beschränkung.
  - `UniqueConstraintViolationException` - Verletzung der Eindeutigkeit eines Wertes.


Beispiel für das Abfangen der Ausnahme `UniqueConstraintViolationException`, die auftritt, wenn versucht wird, einen Benutzer mit einer E-Mail-Adresse einzufügen, die bereits in der Datenbank vorhanden ist (vorausgesetzt, die `email`-Spalte hat einen UNIQUE-Index).

```php
try {
	$database->query('INSERT INTO users', [
		'email' => 'john@example.com',
		'name' => 'John Doe',
		'password' => $hashedPassword,
	]);
} catch (Nette\Database\UniqueConstraintViolationException $e) {
	echo 'Ein Benutzer mit dieser E-Mail-Adresse existiert bereits.';

} catch (Nette\Database\DriverException $e) {
	echo 'Bei der Registrierung ist ein Fehler aufgetreten: ' . $e->getMessage();
}
```

Ausnahmen

Nette Database verwendet eine Hierarchie von Ausnahmeklassen. Die Basisklasse ist Nette\Database\DriverException, die von PDOException erbt und erweiterte Möglichkeiten zur Fehlerbehandlung bei Datenbankfehlern bietet:

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

Von DriverException erben die folgenden spezialisierten Ausnahmeklassen:

  • ConnectionException – signalisiert einen Verbindungsfehler zum Datenbankserver.
  • ConstraintViolationException – Basisklasse für Verletzungen von Datenbankbeschränkungen, von der erben:
    • ForeignKeyConstraintViolationException – Verletzung eines Fremdschlüssels.
    • NotNullConstraintViolationException – Verletzung einer NOT NULL-Beschränkung.
    • UniqueConstraintViolationException – Verletzung der Eindeutigkeit eines Wertes.

Beispiel für das Abfangen der Ausnahme UniqueConstraintViolationException, die auftritt, wenn versucht wird, einen Benutzer mit einer E-Mail-Adresse einzufügen, die bereits in der Datenbank vorhanden ist (vorausgesetzt, die email-Spalte hat einen UNIQUE-Index).

try {
	$database->query('INSERT INTO users', [
		'email' => 'john@example.com',
		'name' => 'John Doe',
		'password' => $hashedPassword,
	]);
} catch (Nette\Database\UniqueConstraintViolationException $e) {
	echo 'Ein Benutzer mit dieser E-Mail-Adresse existiert bereits.';

} catch (Nette\Database\DriverException $e) {
	echo 'Bei der Registrierung ist ein Fehler aufgetreten: ' . $e->getMessage();
}