Foros del Web » Programando para Internet » PHP »

PHP OO Como capturar errores con Try Catch PHP

Estas en el tema de Como capturar errores con Try Catch PHP en el foro de PHP en Foros del Web. Hola buen dia, mi pregunta es la siguiente. resulta que estoy desarrollando una aplicacion en php y deseo poder capturar los errrores que se me ...
  #1 (permalink)  
Antiguo 24/09/2012, 09:05
 
Fecha de Ingreso: septiembre-2012
Mensajes: 2
Antigüedad: 11 años, 7 meses
Puntos: 0
Pregunta Como capturar errores con Try Catch PHP

Hola buen dia, mi pregunta es la siguiente.

resulta que estoy desarrollando una aplicacion en php y deseo poder capturar los errrores que se me presenten en la pagina y de igual forma almacenarlos en una tabla en la base de datos de la aplicacion he utilizado el try catch que ofrece para el manejo de exepciones pero hay algo que no me parece y es el hecho que para lograr entrar a la parte del catch el en try se deba lanzar la exepcion con

throw new Exception('capturame');

He tratado este ejemplo y en teoria deberia existir una impresion en pantalla diciendo "Hubo un error", pero no ocurre nada.
Código PHP:
try{
$resultado=1/0;
}
catch(
Exception $e){
    echo 
"Hubo un error";

por el contrario con el ejemplo anterior me sale este mensaje

que es en relidad lo que si quiero guardar en la tabla de errores de mi aplicacion, que cualquier error que ocurra en la aplicacion se pueda capturar y almacenar y evitar mostrar estos mensajes tan desagradables a los usuarios de la pagina.

Agradezco la ayuda y pronta solución.
  #2 (permalink)  
Antiguo 24/09/2012, 09:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Como capturar errores con Try Catch PHP

Recuerda que PHP es un lenguaje multiparadigma, cuando inició no tenía soporte para excepciones ni nada orientado a objetos, eso se agregó después, por lo que los errores del core de PHP no muestran excepciones, si no FATAL_ERRORS o Warnings como el que pones, no puedes cachar ese tipo de errores en un bloque try/catch.

Tendrías que hacer un wrapper, como una clase math:
Código PHP:
Ver original
  1. class Math
  2. {
  3.          public static function divide($num1, $num2)
  4.          {
  5.                 if ($num2 === 0) {
  6.                        throw new \DomainException('Division by zero');
  7.                 }
  8.  
  9.                 return $num1 / $num2;
  10.          }
  11. }
  12.  
  13.  
  14. try {
  15.        Math::divide(1, 0);
  16. } catch (Exception $e) {
  17.       echo "hubo un error";
  18. }
  #3 (permalink)  
Antiguo 24/09/2012, 09:43
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Como capturar errores con Try Catch PHP

php es un lenguaje multiparadigma, sólo las librerías escritas con PHP POO 5 pueden lanzar verdaderas excepciones, el error de división por 0 es un warning y se puede evitar simplemente con comparar antes si el divisor es diferente de cero.

sé que para los que vienen de lenguajes estrictamente POO como Java o C# es difícil de digerir
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #4 (permalink)  
Antiguo 24/09/2012, 10:15
 
Fecha de Ingreso: septiembre-2012
Mensajes: 2
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Como capturar errores con Try Catch PHP

Bueno y entonces por lo que leo segun veo el php muestra FATAL_ERRORS o Warnings y de estos mensajes que arroja como podria obtener:

1) descripcion del error
2) Nombre del fichero error
3) Linea en la que ocurre el error

Que al fin y al cabo es lo que deseo obtener, y veo que el try catch no se comporta como lo haria en C# por ejemplo.

Gracias por las respuestas.
  #5 (permalink)  
Antiguo 24/09/2012, 10:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Como capturar errores con Try Catch PHP

Busca en el Manual sobre set_error_handler.

Saludos.

Etiquetas: try-catch
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:46.