Foros del Web » Programando para Internet » PHP »

manejo de errores con....

Estas en el tema de manejo de errores con.... en el foro de PHP en Foros del Web. Hola a todos. Vereis, tengo la cabeza hecha un lio. Estoy tratando (aun leyendo) sobre el manejo de errores. El caso es que "tengo una ...
  #1 (permalink)  
Antiguo 22/07/2013, 13:10
 
Fecha de Ingreso: junio-2010
Mensajes: 373
Antigüedad: 13 años, 10 meses
Puntos: 11
manejo de errores con....

Hola a todos.

Vereis, tengo la cabeza hecha un lio.

Estoy tratando (aun leyendo) sobre el manejo de errores. El caso es que "tengo una indecisión" bastante grande entre que utilizar, si manejar los errores con funciones (set_error_handler y otros) o bien utilizar excepciones. Ni se la de paginas que llevo leidas y aún sigo sin decidirme.

Mi proyecto no es gran cosa. Es algo sencillo que, evidentemente se va complicando poco a poco al ir metiendo mas y mas cosas, pero no deja de ser una página relativamente común.

En un principio la duda no debería atormentarme tanto ya que si se implementaron las excepciones con PHP5, por algo sería. Todo el mundo habla de que es "mas profesional" esta opción, pero el caso es que las clases (de momento) no son lo mio. No estoy haciendo uso de ellas en la página. En su día me resultaron bastante confusas y decidí no meterme con ellas.

Se que el uso de excepciones no implica un manejo con clases muy profundo (al menos con lo que he googleado, que no ha sido poco), pero .... "como que les tengo aún un poco de miedo"

El caso es que me gustaría saber si realmente me merece la pena meterme con este asunto (las excepciones) en detrimento de dejar el tratamiento de errores con set_error_handler de lado.

Con funciones puedo llegar "al mismo nivel" que con clases??

Se que esto no debería ser un condicionante al decantarme por uno u otro pero he leido por ahí que el uso de excepciones "se procesa" (no me sale una expresion mejor) mucho más lento que con funciones, por otro lado al parecer los "fatal error" (que en un principio tampoco me deberian aparecer si hago las cosas como dios manda) no se pueden capturar con funciones (amen de truquillos que he visto por la red)...en fin, tengo decenas de ejemplos de unos y otros...lo que me ocurre es que estoy constantemente cambiando de opinión respecto a lo que debería elegir.

Me echais un cable por favor?? Muchas gracias!
  #2 (permalink)  
Antiguo 22/07/2013, 16:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: manejo de errores con....

Son cosas totalmente diferentes, es decir, deberías manejar excepciones y además tener un manejador global de errores.

Las excepciones debes manejarlas a nivel de contexto local, y el manejador a nivel global.

No todos los errores se pueden capturar con try/catch, para eso está el manejador.

Al final, ambos mecanismos pueden emplear un sistema único para mostrar los errores a tu gusto, que sería lo ideal.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 22/07/2013, 17:20
 
Fecha de Ingreso: junio-2010
Mensajes: 373
Antigüedad: 13 años, 10 meses
Puntos: 11
Respuesta: manejo de errores con....

Muchas gracias por echarme un cable. Veras...

Cita:
Iniciado por pateketrueke Ver Mensaje
Las excepciones debes manejarlas a nivel de contexto local, y el manejador a nivel global.
La verdad es que no se que quieres decirme con esto. Ten en cuenta que hablas con un novato total, por no decir con un gilip...

Por favor, ¿podrias ponerme un típico ejemplo donde debería usar una y otra forma?

De nuevo, gracias por intentar echarme una mano. Quiero hacer las cosas bien pero esto mismo me genera muchas dudas. Estoy un poco
  #4 (permalink)  
Antiguo 22/07/2013, 17:35
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: manejo de errores con....

La intención de una excepción no es la misma que la de un error, la excepción deberías poder controlarla y actuar en consecuencia, el error no.

Un ejemplo:
Código PHP:
Ver original
  1. // excepción
  2. try {
  3.   $user = \User::find(-1);
  4. } catch (\Exception $e) {
  5.   // acá haces algo, no necesariamente mostrar un error sino "manejar la excepción"
  6. }
  7.  
  8. // error
  9. strpos('abc', 'd', 5);

Las excpeciones, tal cual etimológicamente son, excepciones en tu código, escenarios excepcionales, no errores per-se.

Por favor consulta un manual.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 22/07/2013, 17:45
 
Fecha de Ingreso: junio-2010
Mensajes: 373
Antigüedad: 13 años, 10 meses
Puntos: 11
Respuesta: manejo de errores con....

mmm... ya pillo lo que me dices.

Muchas gracias pateketrueke
  #6 (permalink)  
Antiguo 22/07/2013, 18:40
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: manejo de errores con....

Pero porq no manejar errores de manera no se mas programada ?? asi; si meto algo en la DB y no se introduce por algo, yo pongo un alert ("No se pudo intro blablabla") y dejo los campos intactos y digo que necesita escribir el nombre del producto, o precio etc y asi los manejo, o eso no es manejo de errores ?? lo que yo no permito es que salgan warnins o errores en mi codigo eso es bueno o malo ??
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #7 (permalink)  
Antiguo 22/07/2013, 23:32
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: manejo de errores con....

Son cosas diferentes (@Kathyu), lo que tu haces son validaciones, de lo que trata el tema son errores a nivel código o excepciones al mismo nivel, pueden parecer similares, pero no lo son, las validaciones corren por cuenta del programador, los errores/excepciones ocurren cuando el flujo de la aplicación cambia por cuestiones externas al programa en si, por ejemplo caída de un servidor DB, una conexión rechazada, etc, la diferencia es que las excepciones puedes preparar al programa que actúe en consecuencia sin que se vea afectado el flujo, los errores por el contrario afectan directamente el flujo del programa, incluso llegando a detenerlo por completo...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #8 (permalink)  
Antiguo 23/07/2013, 13:00
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: manejo de errores con....

Ummmm bien !!! gracias !!!
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #9 (permalink)  
Antiguo 25/07/2013, 00:14
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: manejo de errores con....

Lo que comentan tiene sentido desde el punto de vista que php inicio como lenguaje estructurado y luego implemento y mejoro el uso del paradigma orientado a objetos. Por eso es natural que tengamos dos opciones para el control y manejo de errores pero eso no indica que los errores graves en tiempo de ejecución no puedan ser manejadas por la excepciones, de echo en el manual viene un nota adicional a este respecto

Cita:
Note:
Internal PHP functions mainly use Error reporting, only modern Object oriented extensions use exceptions. However, errors can be simply translated to exceptions with ErrorException.
En la siguiente liga del manual viene como implementar lo antes mencionado:
Código PHP:
Ver original
  1. <?php
  2. function exception_error_handler($errno, $errstr, $errfile, $errline ) {
  3.     throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
  4. }
  5. set_error_handler("exception_error_handler");
  6.  
  7. /* Trigger exception */
  8. ?>
Lo cual da como resultado
Cita:
Fatal error: Uncaught exception 'ErrorException' with message 'Wrong parameter count for strpos()' in /home/bjori/tmp/ex.php:8
Stack trace:
#0 [internal function]: exception_error_handler(2, 'Wrong parameter...', '/home/bjori/php...', 8, Array)
#1 /home/bjori/php/cleandocs/test.php(8): strpos()
#2 {main}
thrown in /home/bjori/tmp/ex.php on line 8
Aclaro que tengo poco en el lenguaje, pero al parecer puedes manejar los errores de ejecución también con excepciones. Si en algo me equivoco agardeceria notas adicionales en el tema.
para mas detalles consulten el manual: http://www.php.net/manual/en/language.exceptions.php
Cita:
lo que yo no permito es que salgan warnins o errores en mi codigo eso es bueno o malo ??
KATHYU: Eso esta bien, nunca debe de aparecer un error o warning en pantalla para el usuario, ya que esto permite ver información que puede ser usada por alguien que quiera atacar tu aplicacion. En php hay forma de reportar los errores mediante registros usando archivos.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: errores, manejo
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 13:36.