Nette Documentation Preview

syntax
Izjeme
******

Podatkovna baza Nette uporablja hierarhijo izjem. Osnovni razred je `Nette\Database\DriverException`, ki razširja `PDOException` in zagotavlja izboljšano funkcionalnost za delo z napakami podatkovne zbirke:

- Metoda `getDriverCode()` vrne kodo napake iz gonilnika zbirke podatkov.
- Metoda `getSqlState()` vrne kodo SQLSTATE.
- Metodi `getQueryString()` in `getParameters()` lahko uporabite za pridobitev prvotne poizvedbe in njenih parametrov.

Razred `DriverException` je razširjen z naslednjimi specializiranimi izjemami:

- `ConnectionException` - označuje neuspešno vzpostavitev povezave s strežnikom podatkovne zbirke.
- `ConstraintViolationException` - osnovni razred za kršitve omejitev podatkovne zbirke, iz katerega dedujejo naslednje izjeme:
  - `ForeignKeyConstraintViolationException` - kršitev omejitve tujega ključa.
  - `NotNullConstraintViolationException` - kršitev omejitve NOT NULL.
  - `UniqueConstraintViolationException` - kršitev omejitve edinstvenosti.


Naslednji primer prikazuje, kako ujeti `UniqueConstraintViolationException`, kar se zgodi pri poskusu vstavitve uporabnika z elektronskim naslovom, ki že obstaja v zbirki podatkov (ob predpostavki, da ima stolpec `email` edinstven indeks):

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

Izjeme

Podatkovna baza Nette uporablja hierarhijo izjem. Osnovni razred je Nette\Database\DriverException, ki razširja PDOException in zagotavlja izboljšano funkcionalnost za delo z napakami podatkovne zbirke:

  • Metoda getDriverCode() vrne kodo napake iz gonilnika zbirke podatkov.
  • Metoda getSqlState() vrne kodo SQLSTATE.
  • Metodi getQueryString() in getParameters() lahko uporabite za pridobitev prvotne poizvedbe in njenih parametrov.

Razred DriverException je razširjen z naslednjimi specializiranimi izjemami:

  • ConnectionException – označuje neuspešno vzpostavitev povezave s strežnikom podatkovne zbirke.
  • ConstraintViolationException – osnovni razred za kršitve omejitev podatkovne zbirke, iz katerega dedujejo naslednje izjeme:
    • ForeignKeyConstraintViolationException – kršitev omejitve tujega ključa.
    • NotNullConstraintViolationException – kršitev omejitve NOT NULL.
    • UniqueConstraintViolationException – kršitev omejitve edinstvenosti.

Naslednji primer prikazuje, kako ujeti UniqueConstraintViolationException, kar se zgodi pri poskusu vstavitve uporabnika z elektronskim naslovom, ki že obstaja v zbirki podatkov (ob predpostavki, da ima stolpec email edinstven indeks):

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