Nette Documentation Preview

syntax
Eccezioni
*********

Nette Database utilizza una gerarchia di eccezioni. La classe base è `Nette\Database\DriverException`, che eredita da `PDOException` e fornisce funzionalità estese per la gestione degli errori del database:

- Il metodo `getDriverCode()` restituisce il codice di errore dal driver del database
- Il metodo `getSqlState()` restituisce il codice SQLSTATE
- I metodi `getQueryString()` e `getParameters()` consentono di ottenere la query originale e i suoi parametri

Da `DriverException` ereditano le seguenti eccezioni specializzate:

- `ConnectionException` - segnala un fallimento della connessione al server del database
- `ConstraintViolationException` - classe base per la violazione dei vincoli del database, da cui ereditano:
  - `ForeignKeyConstraintViolationException` - violazione della chiave esterna
  - `NotNullConstraintViolationException` - violazione del vincolo NOT NULL
  - `UniqueConstraintViolationException` - violazione dell'unicità del valore


Esempio di cattura dell'eccezione `UniqueConstraintViolationException`, che si verifica quando cerchiamo di inserire un utente con un'email che esiste già nel database (presupponendo che la colonna email abbia un indice univoco).

```php
try {
	$database->query('INSERT INTO users', [
		'email' => 'john@example.com',
		'name' => 'John Doe',
		'password' => $hashedPassword,
	]);
} catch (Nette\Database\UniqueConstraintViolationException $e) {
	echo 'Esiste già un utente con questa email.';

} catch (Nette\Database\DriverException $e) {
	echo 'Si è verificato un errore durante la registrazione: ' . $e->getMessage();
}
```

Eccezioni

Nette Database utilizza una gerarchia di eccezioni. La classe base è Nette\Database\DriverException, che eredita da PDOException e fornisce funzionalità estese per la gestione degli errori del database:

  • Il metodo getDriverCode() restituisce il codice di errore dal driver del database
  • Il metodo getSqlState() restituisce il codice SQLSTATE
  • I metodi getQueryString() e getParameters() consentono di ottenere la query originale e i suoi parametri

Da DriverException ereditano le seguenti eccezioni specializzate:

  • ConnectionException – segnala un fallimento della connessione al server del database
  • ConstraintViolationException – classe base per la violazione dei vincoli del database, da cui ereditano:
    • ForeignKeyConstraintViolationException – violazione della chiave esterna
    • NotNullConstraintViolationException – violazione del vincolo NOT NULL
    • UniqueConstraintViolationException – violazione dell'unicità del valore

Esempio di cattura dell'eccezione UniqueConstraintViolationException, che si verifica quando cerchiamo di inserire un utente con un'email che esiste già nel database (presupponendo che la colonna email abbia un indice univoco).

try {
	$database->query('INSERT INTO users', [
		'email' => 'john@example.com',
		'name' => 'John Doe',
		'password' => $hashedPassword,
	]);
} catch (Nette\Database\UniqueConstraintViolationException $e) {
	echo 'Esiste già un utente con questa email.';

} catch (Nette\Database\DriverException $e) {
	echo 'Si è verificato un errore durante la registrazione: ' . $e->getMessage();
}