Ver Mensaje Individual
  #52 (permalink)  
Antiguo 02/09/2010, 23:47
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 8 meses
Puntos: 20
Respuesta: Duda con PDO y mi clase

Cita:
Iniciado por GatorV Ver Mensaje
Si te fijas es el mismo error, mi comentario a manejar el try/catch en donde implementas es para que tu puedas controlar el flujo de tu código, si no se va aparar en el primer exit() y de nada sirve la excepción como tal.

Ahora para que "repares" el error tienes que poner el nombre de la base de datos correcta, por eso te lanza la excepcion.
Jejeje no nos entendiamos, para que el try y catch me mostrase el mismo error que si lo ponia dentro de la clase MyPDO, debía ponerlo no cuando creaba la Categoria sino antes, justo cuando hago la creación de la instancia de la base de datos.

Aquí

Código PHP:
Ver original
  1. try {
  2.     $db_slave = new MyPDO($config_slave);
  3.     $db_slave->setAttribute(MyPDO::ATTR_ERRMODE, MyPDO::ERRMODE_EXCEPTION);
  4. } catch(PDOException $e){
  5.     echo $e->getMessage();
  6.     echo "Hubo un error";
  7. }

Y ahora sí, el error que produce era el que estaba intentando ver :D
Me refiero que queda mostrado de la misma manera

SQLSTATE[42000] [1049] Unknown database 'code3lab'Hubo un error

Sin embargo, no consigo que el script termine y no siga mirando cuando no se puede crear la instancia si los datos de conexión no son validos.

Ejemplo:

Código PHP:
Ver original
  1. try {
  2.     $db_slave = new MyPDO($config_slave);
  3. } catch(PDOException $e){
  4.     echo $e->getMessage();
  5.     echo "Hubo un error";
  6.     exit;
  7. }
  8. $db_slave->setAttribute(MyPDO::ATTR_ERRMODE, MyPDO::ERRMODE_EXCEPTION);

El script muestra el error pero sigue ejecutandose fuera del TRY y CATCH, porque viene el setAttribute que claro, falla pq no se ha creado la instancia. Pero si funcionase el exit, no debería haber llegado al setAttribute no?

SQLSTATE[42000] [1049] Unknown database 'cod3elab'Hubo un error
Fatal error: Call to a member function setAttribute() on a non-object in C:\wamp\www\00-laboratorio_test\secciones\class_categorias\Nueva\ ConectarCon2_BD_version2\ejemplo1.php on line 59


¿La pregunta es... por qué no finaliza el script dentro del CATCH si hay un exit?

Gracias de antemano!