Ver Mensaje Individual
  #9 (permalink)  
Antiguo 29/07/2011, 13:30
Avatar de GatorV
GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Duda PDO y ROLLBACK

Así es, es tal cual dice abimaelrc, el catch actua a la primera excepción que se lanze en el bloque y el catch agarra la excepción si esta definida, en caso contrario salta más arriba hasta que alguien la cache, un test podría ser así:
Código PHP:
Ver original
  1. $dbh = new PDO(...);
  2. try {
  3.       $dbh->beginTransaction();
  4.       $dbh->query("insert...");
  5.  
  6.       throw new PDOException('foo');
  7.       $dbh->commit();
  8. } catch (PDOException $e) {
  9.       echo "something bad: " . $e->getMessage();
  10.  
  11.       $dbh->rollback();
  12. }

Ese código nunca funcionará porque estamos metiendo la excepción "a mano" la idea es que tu lanzes una excepción en base a condiciones conocidas o desconocidas.

Por ejemplo, que tal que quieres hacer un UPDATE pero solamente sabes que hay 1 registro, y por alguna razon rowCount te devuelve 2, lanzas una excepción, o cosas por el estilo.

Saludos.