Pregunta

estoy desarrollando algún proyecto. Y yo quiero controlar errores diferentes. Yo sé que en todos los marcos populares y proyectos php hay diferentes excepciones. Pero creo que no es necesario el trabajo. Si se ha producido el error que podemos hacer die () con nuestro mensaje. 1. ¿Cuáles son las principales ventajas de las mismas? 2. ¿Puedo controlar mis errores con die ()?

Gracias.

¿Fue útil?

Solución

Bueno, se podría utilizar die(). Pero eso hace que todos los errores fatales. Lo que significa que no se puede tratar de recuperarse del error en absoluto. En algunos casos eso está bien que hacer.

Sin embargo, en la mayoría de los casos, es posible que desee la capacidad de "la limpieza" tras el error, o probar con otro método. Aquí es donde excepciones son útiles ... Ellos le permiten elegir dónde y si desea controlar el error. Dejaron que intenta recuperarse sin problemas de los errores.

Por ejemplo, digamos que usted tiene un método que descarga un archivo desde un servidor remoto: downloadFromRemoteServer($address);

Si usted utiliza die(), si la descarga falla, las termina guión. Fin de la historia.

Sin embargo, si se utiliza excepciones, podría intentar otro servidor o incluso probar un método diferente (HTTP vs FTP, etc.):

try {
    $file = downloadFromRemoteServer('http://example.com/foo');
} catch (DownloadFailedException $e) {
    try {
        $file = downloadFromRemoteServer('http://secondtry.example.com/foo');
    } catch (DownloadFailedException $e2) {
        die('Could not download file');
    }
}
return $file;

Pero recuerda que las excepciones son útiles sólo para casos excepcionales. Ellos no están destinados a ser utilizados por cualquier error posible. Por ejemplo, si un usuario no verifica su dirección de correo electrónico correcta, eso no es excepcional. Pero si no se puede conectar con el servidor de base de datos, o tener un conflicto en el PP, eso sería una excepción circunstancia ...

Otros consejos

Alexander,

die () y Excepciones lograr cosas diferentes.

la construcción del lenguaje "mueren" simplemente se detiene la ejecución de una secuencia de comandos y, posiblemente, da salida a los parámetros si se ha denominado como una función.

Por otro lado, las excepciones son las estructuras más avanzadas que se utilizan en contextos de programación orientada a objetos para dar el desarrollador más flexibilidad en cuanto a si que necesita un script para ser detenido y si es así, de qué manera, lo que la salida que se muestra al usuario etc.

Las excepciones son un poco más complejo que esto por lo que debe documentar tal vez a sí mismo con un poco de programación orientada a objetos primero o para el caso leer sobre Zend Framework y podrá tener una idea de lo que son excepciones.

Para cosas simples, sin embargo, siempre se puede utilizar la salida (o matriz, que es la misma cosa).

Espero que esta ayuda, Eslava

  

1 ¿Cuáles son las principales ventajas de excepciones?

Las principales ventajas son:

  • funciones que fallan no tienen que contaminan su regreso con las condiciones de error
  • excepciones escritas pueden ser manejados a niveles apropiados en el código, decidir qué parte del código puede manejar el que los errores
  • que puede almacenar mucha más información acerca de la condición de error en la propia excepción, por lo que su manejo, y posiblemente se recupera de ella, más fácil.
  

2 ¿Puedo controlar mis errores con el troquel ()?

Casi no lo llamaría a controlar, yo diría que es renunciar a la realidad el manejo de un error. En ningún momento de mis proyectos es un die() realmente fácil de usar, y todos esos ejemplos die('...some error condition...'); de código PHP en mi humilde opinión son solamente adecuado para proyectos en desarrollo. En la producción, se le desea que sus usuarios puedan continuar con sus tareas / programas de la manera más fácil posible, por lo que un 'vuelve a intentarlo' (si la condición de error no es probable que se reunió de nuevo), 'lo siento que no funciona '/ otros tipos de mensajes, formas / páginas son todos die() entonces más deseable.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top