Nette Documentation Preview

syntax
Kivételek
*********

A Nette Database a kivételek hierarchiáját használja. Az alaposztály a `Nette\Database\DriverException`, amely a `PDOException` kiterjesztése, és kibővített funkcionalitást biztosít az adatbázis hibáinak kezelésére:

- A `getDriverCode()` metódus visszaadja az adatbázis-illesztőprogram hibakódját.
- A `getSqlState()` metódus az SQLSTATE kódot adja vissza.
- A `getQueryString()` és a `getParameters()` metódusokkal az eredeti lekérdezés és annak paraméterei kérhetők le.

A `DriverException` osztály a következő speciális kivételekkel bővül:

- `ConnectionException` - az adatbázis-kiszolgálóhoz való csatlakozás sikertelenségét jelzi.
- `ConstraintViolationException` - az adatbázis-korlátozások megsértésének alaposztálya, amelyből a következő kivételek öröklődnek:
  - `ForeignKeyConstraintViolationException` - idegenkulcsos korlátozás megsértése.
  - `NotNullConstraintViolationException` - NOT NULL megkötés megsértése.
  - `UniqueConstraintViolationException` - egyediségi megkötés megsértése.


A következő példa azt mutatja be, hogyan lehet elkapni a `UniqueConstraintViolationException`, ami akkor fordul elő, amikor olyan felhasználót próbálunk beszúrni egy olyan e-mail címmel, amely már létezik az adatbázisban (feltételezve, hogy a `email` oszlopnak egyedi indexe van):

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

Kivételek

A Nette Database a kivételek hierarchiáját használja. Az alaposztály a Nette\Database\DriverException, amely a PDOException kiterjesztése, és kibővített funkcionalitást biztosít az adatbázis hibáinak kezelésére:

  • A getDriverCode() metódus visszaadja az adatbázis-illesztőprogram hibakódját.
  • A getSqlState() metódus az SQLSTATE kódot adja vissza.
  • A getQueryString() és a getParameters() metódusokkal az eredeti lekérdezés és annak paraméterei kérhetők le.

A DriverException osztály a következő speciális kivételekkel bővül:

  • ConnectionException – az adatbázis-kiszolgálóhoz való csatlakozás sikertelenségét jelzi.
  • ConstraintViolationException – az adatbázis-korlátozások megsértésének alaposztálya, amelyből a következő kivételek öröklődnek:
    • ForeignKeyConstraintViolationException – idegenkulcsos korlátozás megsértése.
    • NotNullConstraintViolationException – NOT NULL megkötés megsértése.
    • UniqueConstraintViolationException – egyediségi megkötés megsértése.

A következő példa azt mutatja be, hogyan lehet elkapni a UniqueConstraintViolationException, ami akkor fordul elő, amikor olyan felhasználót próbálunk beszúrni egy olyan e-mail címmel, amely már létezik az adatbázisban (feltételezve, hogy a email oszlopnak egyedi indexe van):

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