-
-
Notifications
You must be signed in to change notification settings - Fork 277
Expand file tree
/
Copy pathexceptions.texy
More file actions
34 lines (26 loc) · 1.66 KB
/
exceptions.texy
File metadata and controls
34 lines (26 loc) · 1.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Kivételek
*********
A Nette Database kivétel-hierarchiát használ. Az alaposztály a `Nette\Database\DriverException`, amely a `PDOException`-ből öröklődik, és kibővített lehetőségeket biztosít az adatbázis-hibák kezelésére:
- A `getDriverCode()` metódus visszaadja az adatbázis-driver hibakódját.
- A `getSqlState()` metódus visszaadja az SQLSTATE kódot.
- A `getQueryString()` és `getParameters()` metódusok lehetővé teszik az eredeti lekérdezés és paramétereinek lekérését.
A `DriverException`-ből a következő specializált kivételek öröklődnek:
- `ConnectionException` - jelzi az adatbázis-szerverhez való csatlakozás sikertelenségét.
- `ConstraintViolationException` - alaposztály az adatbázis-korlátozások megsértéséhez, amelyből öröklődnek:
- `ForeignKeyConstraintViolationException` - idegen kulcs megsértése.
- `NotNullConstraintViolationException` - NOT NULL korlátozás megsértése.
- `UniqueConstraintViolationException` - érték egyediségének megsértése.
Példa a `UniqueConstraintViolationException` kivétel elkapására, amely akkor következik be, ha olyan e-mail címmel próbálunk meg felhasználót beszúrni, amely már létezik az adatbázisban (feltéve, hogy az email oszlopnak egyedi indexe van).
```php
try {
$database->query('INSERT INTO users', [
'email' => '[email protected]',
'name' => 'John Doe',
'password' => $hashedPassword,
]);
} catch (Nette\Database\UniqueConstraintViolationException $e) {
echo 'Már létezik felhasználó ezzel az e-mail címmel.';
} catch (Nette\Database\DriverException $e) {
echo 'Hiba történt a regisztráció során: ' . $e->getMessage();
}
```