Capturando excepciones en Symfony 1.4

Capturando excepciones en Symfony 1.4
Gracias al componente sfEventDispatcher que se encuentra integrado en Symfony 1.x (desde la versión 1.2)  es posible capturar eventos (a manera de hooks) de forma muy sencilla. Voy a explicar rápidamente como podemos capturar eventos asociados a excepciones que regularmente implican errores cuyo código de salida es 500. Primero que todo, Symfony incluye una serie de eventos (lista completa) genéricos que notifican varias tareas comúnes como: procesamiento de formularios y filtros, ejecución de tareas, etc. Para este caso particular, vamos a centrarnos en el evento: application.throw_exception el cual es notificado cuando se captura una excepción (por ejemplo de tipo sfFileException). Para poder capturar este evento, lo que debemos hacer es establecer un observador que se encargue de capturar el evento y procesarlo. Para ello simplemente agregamos en la clase de configuración del proyecto (o de la aplicación):
  1. class miAplicacionConfiguration extends sfApplicationConfiguration
  2. {
  3. public function configure()
  4. {
  5. $this->dispatcher->connect(
  6. 'application.throw_exception', array(
  7. 'MiClaseObservador','metodoObservador')
  8. }
  9. }
Cada vez que ocurra una excepción, el método metodoObservador de la clase MiClaseObservador será llamado, cuyo parámetro será un objeto sfEvent. A continuación la implementación de la clase y el método:
  1. class MiClaseObservador
  2. {
  3. public static function metodoObservador(sfEvent $event)
  4. {
  5. $mailer = sfContext::getInstance()->;getMailer();
  6. // Se obtiene la instancia del objeto que notifica el error, un ejemplar de una clase que extiende la clase
  7. // Exception de PHP
  8. $subject = $event->getSubject();
  9. $message = $subject->getMessage() . $subject->getTraceAsString();
  10. $mailer->composeAndSend('info@example.com', 'developers@example.com', 'An error has been occurred', $message);
  11. }
  12. }
El código anterior envía un correo electrónico notificando del error, muy útil para entornos de prueba. El mensaje incluye el mensaje de error y el trace. Esperamos sea de utilidad.
Leer a continuación: Portal EmiConecta

1 de cada 10 entrevistados es contratado en AxiaCore

Contactar un experto

Hemos trabajado con estas marcas, la tuya es la siguiente?

  • Ecopetrol
  • Maloka
  • Camacol
  • COPNIA

Nueva York

50 West. 72nd Street. NY 10023
+1 646 688 2356

Londres

145-157 St John Street. EC1V 4PW
+44 07751 092 425

Bogotá

Cll 100 # 14 - 63 OF 801
+57 (1) 7047348 | +57 (1) 2360310