Nette Documentation Preview

syntax
Excepciones
***********

Nette Database utiliza una jerarquía de excepciones. La clase base es `Nette\Database\DriverException`, que hereda de `PDOException` y proporciona opciones extendidas para trabajar con errores de la base de datos:

- El método `getDriverCode()` devuelve el código de error del driver de la base de datos
- El método `getSqlState()` devuelve el código SQLSTATE
- Los métodos `getQueryString()` y `getParameters()` permiten obtener la consulta original y sus parámetros

De `DriverException` heredan las siguientes excepciones especializadas:

- `ConnectionException` - señala un fallo de conexión al servidor de base de datos
- `ConstraintViolationException` - clase base para violaciones de restricciones de la base de datos, de la cual heredan:
  - `ForeignKeyConstraintViolationException` - violación de clave foránea
  - `NotNullConstraintViolationException` - violación de restricción NOT NULL
  - `UniqueConstraintViolationException` - violación de unicidad de valor


Ejemplo de captura de excepción `UniqueConstraintViolationException`, que ocurre cuando intentamos insertar un usuario con un correo electrónico que ya existe en la base de datos (asumiendo que la columna `email` tiene un índice único).

```php
try {
	$database->query('INSERT INTO users', [
		'email' => 'john@example.com',
		'name' => 'John Doe',
		'password' => $hashedPassword,
	]);
} catch (Nette\Database\UniqueConstraintViolationException $e) {
	echo 'El usuario con este correo electrónico ya existe.';

} catch (Nette\Database\DriverException $e) {
	echo 'Ocurrió un error durante el registro: ' . $e->getMessage();
}
```

Excepciones

Nette Database utiliza una jerarquía de excepciones. La clase base es Nette\Database\DriverException, que hereda de PDOException y proporciona opciones extendidas para trabajar con errores de la base de datos:

  • El método getDriverCode() devuelve el código de error del driver de la base de datos
  • El método getSqlState() devuelve el código SQLSTATE
  • Los métodos getQueryString() y getParameters() permiten obtener la consulta original y sus parámetros

De DriverException heredan las siguientes excepciones especializadas:

  • ConnectionException – señala un fallo de conexión al servidor de base de datos
  • ConstraintViolationException – clase base para violaciones de restricciones de la base de datos, de la cual heredan:
    • ForeignKeyConstraintViolationException – violación de clave foránea
    • NotNullConstraintViolationException – violación de restricción NOT NULL
    • UniqueConstraintViolationException – violación de unicidad de valor

Ejemplo de captura de excepción UniqueConstraintViolationException, que ocurre cuando intentamos insertar un usuario con un correo electrónico que ya existe en la base de datos (asumiendo que la columna email tiene un índice único).

try {
	$database->query('INSERT INTO users', [
		'email' => 'john@example.com',
		'name' => 'John Doe',
		'password' => $hashedPassword,
	]);
} catch (Nette\Database\UniqueConstraintViolationException $e) {
	echo 'El usuario con este correo electrónico ya existe.';

} catch (Nette\Database\DriverException $e) {
	echo 'Ocurrió un error durante el registro: ' . $e->getMessage();
}