¿El mejor método en PHP para el manejo de errores? ¿Convertir todos los errores de PHP (avisos de advertencia, etc.) en excepciones?

7

¿Cuál es el mejor método en PHP para el manejo de errores?

¿hay alguna forma en PHP para convertir todos los errores de PHP (avisos de advertencia, etc.) en excepciones?

¿Cuál es la mejor manera / práctica de manejar el error?

de nuevo:

si abusamos de las excepciones (es decir, prueba / captura) en muchas situaciones, creo que la aplicación se detendrá innecesariamente.

para una simple comprobación de errores podemos usar return false; pero puede estar saturando la codificación con muchas otras condiciones, si no.

¿Qué sugieren ustedes?

    
pregunta user1179459 02.10.2012 - 09:12

3 respuestas

4

Si sus entornos de desarrollo y producción son independientes, debe tener la configuración display_errors ini establecida en off en producción y on (y yo establecería el nivel error_reporting en -1 : todos los errores ) en desarrollo. No debería ser demasiado difícil escribir un código que no emita advertencias o avisos a través del uso normal a menos que esté utilizando una biblioteca PEAR, ya que tienen muchos códigos heredados que causan advertencias.

En cuanto a los errores y las excepciones, en el desarrollo solo debes tratarlos normalmente para que puedas ver lo que está mal, y en la producción puedes usar set_error_handler y set_exception_handler métodos para detectar errores y excepciones y mostrar una página de error al usuario y escribir el error real en un archivo de registro que puede consultar más adelante.

Aparte de eso, no usaría ninguna táctica especial para la supresión de errores.

    
respondido por el Explosion Pills 02.10.2012 - 11:22
3

Cuando desarrolle su código, debe tener habilitados todos los informes de errores en PHP, incluidos avisos y advertencias. Su código de producción nunca debe producir un error de PHP. En algunos casos especiales, puede sobrevivir con algunas advertencias y avisos de PHP, pero en su servidor de producción solo debe mostrar los errores al usuario.

A continuación, los errores de PHP significan que tienes algo realmente desordenado en tu código y tales cosas nunca deben llegar a producción. Cualquier cantidad de pruebas automatizadas decentes asegurará que esto nunca suceda. = > Corrección para mayor claridad: "... se asegurará de que esto suceda con poca frecuencia".

No te recomiendo que transformes los Errores, Advertencias y Avisos de PHP en Excepciones o "FALSO". ¡Nunca! Si ocurren en su computadora, la aplicación tiene un problema grave, así que no convierta el error en algo que pueda detectar y que olvide / ignore fácilmente.

Cuando tenga situaciones en las que su código pueda fallar, use la verificación adecuada y lance excepciones. Más aún, siempre que sea posible, haga su propia excepción y lance la más adecuada para esa situación.

Por ejemplo, en lugar de permitir que PHP arroje un "índice no válido" cuando intenta leer un elemento de una matriz, puede hacer algo como:

if (!isset($superWeapons['nuclear'])) 
  throw new MissingSuperweaponException('We heave no nuclear weapons awailable!');

En alguna parte, en un nivel más alto de tu aplicación, puedes detectar todas estas excepciones y mostrarle al usuario los mensajes agradables que deseas.

Tenga en cuenta que las excepciones son para casos excepcionales, para situaciones en las que su aplicación nunca debería estar. Use solo cuando sea necesario.

Cuando hay un resultado de una operación, un resultado que puede ser VERDADERO o FALSO o un valor o una cadena, que no es un caso excepcional, es un resultado o un valor de retorno. Por ejemplo, cuando realiza una búsqueda de una cadena, el resultado puede ser el índice del texto buscado. Sin embargo, no encontrar el texto no es un caso excepcional, solo debe devolver cero o falso, no una excepción.

    
respondido por el Patkos Csaba 02.10.2012 - 11:16
0

Respuesta corta: Si usa PHP 5, puede manejar el error con excepciones:

enlace

Esta forma es más clara que el mensaje de excepción de configuración manual, ya que tiene acceso a un sistema de captura de prueba y puede aislar el manejo de excepciones

    
respondido por el EL Yusubov 02.10.2012 - 13:53

Lea otras preguntas en las etiquetas