Utilizar Try-Catch con PHP


El dia de hoy estaré hablándoles sobre Try-Catch, para aquellos que se pregunte que es!! y como se come!!, en palabras simples sin meterme en conceptos rebuscados, es un método usado por algunos lenguajes y ahora ya integrado en php5, es un simple detector de  errores en nuestros procesos y con este tenemos el ¡¡maldito poder!! para hacer con ellos lo que queramos.

Les puedo adelantar un poco sobre donde yo lo eh usado con PHP.  Se que como buenos desarrolladores de bases de datos y sistemas, analizan muy bien su Entidad – Relación en la base de datos, pues bien aun así es necesario en muchas ocasiones hacer relaciones simbólicas en nuestras bases de datos, con esto me refiero que no utilizamos el motor de la base de datos para hacer una llave foranea y así poder controlar procesos en cascada, si no mas bien lo hacemos simbolico y colocamos un campo con el valor de otra tabla para tener una relación, pero en este caso el problema que nos ocurre siempre es en procesos largos donde modificamos dos o tres tablas, y como es habitual al desarrollar  el problemas se presenta a mitad de proceso y siempre… «CHINNNN…. TENGO QUE CAMBIAR TODOS LOS VALORES DE NUEVO PARA EMPEZAR A PROBAR», YA SEEE!!!  pues bien para ese rollo tan embarazoso utilizamos  TRY-CATCH, precisamente para evitar modificaciones en nuestras tablas sin que confirmemos que todo el proceso esta correcto, ¿SE ESCUCHA INTERESANTE? 

Si lo es! y mucho… Seguire desarrollando este teman en el transcurso del día, no dejes de visitar este tema, también te adelanto  que de igual manera lo expondremos para  JAVASCRIPT.

////////////////

Pués bien empezamos a generar el ejercicio para este POST.

Vamos a comenzar colocando la estructura de un TRY – catch.

<?PHP
try

       {
 //COLOCAMOS LA PROGRAMACION QUE NECESITAMOS HACER Y EN ESTE MISMO LUGAR CONFIGURAMOS            
         //NUESTRAS EXCEPCIONES.
}catch(Exception $e)

        {
 echo ‘IMPRIMIMOS EL MENSAJE QUE QUEREMOS QUE VEAN MAS EL ERROR CACHADO EN $e ‘.$e;
 }

?>

 Podemos ver la estructura de un TRY – CATCH, es realmente muy simple, la pregunta que nos estaremos haciendo es, como le indico a php que envie un error para que pueda tomar una decision de romper el proceso que se encuentra dentro de las etiquetas de try{} , esto es muy fácil de hacer, y lo podemos hacer en cualquier momento dentro de nuestro código, vamos hacer memoria de nuestra clase de conexión  MySQL  , en cualquiera de los métodos encontramos algo muy similar a esto.

throw new Exception(‘No Funciona la conexcion. El Error es el siguiente: ‘.mysql_error());

Vamos a explicarlo!!!!


Pues bien la manera de decirle al try que existe un error es generando un throw new Exception(); dentro de los parentesis del Exception colocamos el mensajes que queremos que catch(Exception $e) pueda recoger en la variable $e, con esto rompemos todo lo que estamos haciendo dentro de try(). vamos a empezar con un ejemplo de lo simple y de ahi le vamos metiendo intensidad y nos vamos volviendo más malditos JEJEJEJE! hasta que logremos entender por completo este show del Try – Catch.

Les pido una disculpa por la espera, ya que este post lleva varios días sin actualizar, se me saturo el show!! pero no hagamos hincapié a eso, empecemos con un ejercicio básico para que ustedes empiecen a sentir la fuera de utilizar el try-catch, empezaremos con un pequeño ejemplo donde vamos a provocar los errores, con esto vamos a interrumpir un proceso.

Este archivo lo llame try-catch.php

Como podemos ver en la imagen es muy sencillo de identificar donde generamos la exception, para interrumpir el proceso y hacer que PHP se dirija directamente a catch. Veamos la linea throw new Exception(‘Existio un error, provocado’,0);  esta linea lo que hace es decirle a try que existió un error y que es necesario se pare el código y se dirija a catch, en la siguiente imagen vamos a poder visualizar cuando ejecutamos este código que se visualizan las primeras lineas de impresión con echo «INICIA PROCESO»; echo «<BR> CONTINUAR PROCESO»; después existe el mandato de error al try y se salta a imprimir el error que cacho.

Resultado de la ejecución del ejercicio anterior.

Como le comente es un fácil de usar, pero vamos poniéndole más sabor, vamos hacer algo más avanzado «NI TANTO», pero ya mas adentrado al manejo de las exceptions. Si fueron observadores nunca les hable del maldito cero que puse en el throw new Exception, les voy a platicar para que sirve.

El throw new Exception esta formado por dos cosas (‘MENSAJE’,CODIGO), nosotros podemos bautizar a nuestros mensajes con un código, este después los podemos leer, tanto el mensaje o el código para el manejo profesional de los mismos.

Vamos a realizar un pequeño script donde podemos leer cada uno de ellos e imprimirlos en pantalla.

Realicen un nuevo script y coloquen lo siguiente. Que intento demostrar en el siguiente script?,  simular que necesitamos en nuestro sistema una decisión inteligente y que identifique una edad si es menor de edad o mayor de edad, si es menor de edad terminará el proceso y nos dirá que existió un error, si es lo contrario guardaríamos información en una base de datos.

Si vemos la imagen del script, vemos que al final les comente todas las propiedades que instanciamos al crear una Exception, podemos controlar el mensaje, el código que le coloquemos, el nombre del archivo y ruta, la linea donde se cometió el error, la excepción anterior, entre otras cosas. Al correr este código se ejecutara la exception ya que la variable $edad tiene 11.

Resultado.

Si colocan la $edad en 18 para arriba solamente tendremos un mensaje de que se guarda la información.

Como se los dije, estas sentencias que nos regalan los diseñadores de PHP, es muy útil en el manejo de errores dentro de nuestros sistemas, con esto afirmo que si queremos tener un sistema profesional con nuestros propios controles de errores ya tenemos las herramientas, mensajes y códigos que nosotros mismos podemos ir creando al realizar el análisis.

Vamos  continuar en el siguiente  artículo de scripts para todos con un ejemplo con bases de datos.

MDS JOSE LUIS GOMEZ AGUILAR.

CONTACTAME.

4 comentarios en “Utilizar Try-Catch con PHP”

  1. El ejemplo del uso de try-catch esta sencillo y funciona de maravilla, sin embargo tengo una duda?
    en la clase conexion a la BD en la linea

    throw new Exception(‘No Funciona la conexcion. El Error es el siguiente: ‘.mysql_error());

    se supone que debio estar despues de try y al generarse el error invocar a catch, pero no los veo estan comentados, estoy mal yo, no entendi o donde me quede, quisiera que se me aclarara la duda un saludo
    Salvador

    1. Como estas salvador, claro entiendo la inquietud te genero el que el try no hiciera un retroceso de tus movimientos en la base de datos esto es muy sencillo, vamos a recordar que tenemos un try catch okey.. pues bien. cuando iniciamos el try necesitamos indicarle a la base de datos que realice un inicio de proceso(BEGIN), si pasa bien todo le hacemos una confirmación a la base de datos que ejecute (COMMIT) y si existe un error le indicamos que deje todo como estaba antes (ROLLBACK), como lo usamos.. es bien sencillo, colare les metodos que existen en nuestras clase de conexión y después colocare como se veria en el try.

      public function begin()
      {
      @mysql_query(«BEGIN»);
      }

      public function commit()
      {
      @mysql_query(«COMMIT»);
      }

      public function rollback()
      {
      @mysql_query(«ROLLBACK»);
      }

      Okey ya recordamos estos métodos que se encuentran en la clase de conexión, dentro del try quedaria con esta forma.

      try
      {
      $db->begin();
      …….
      …….
      $db->commit();
      }catch(Exception $e)
      {
      $db->rollback();
      }

      esperando que esto te de una mayor perspectiva de que necesitamos hacer dentro de un try catch y como preparar la base de datos. colocare un ejemplo real en un nuevo tema try-catch y mysql. por el momento espero que esto aclare dudas!

      Gracias por tus comentarios.

Deja un comentario