Estoy haciendo un pequeño navegador de archivos para la tarea, y lo tengo funcionando tan bien como necesito, pero estoy un poco confundido al manejar escenarios de error en PHP ahora que estoy tratando de refactorizar mi codificación.¿Debo intentar/atrapar opendir en PHP debido a E_WARNING?
Estoy acostumbrado a la manipulación de errores C++/C# try/catch, que PHP parece tener alguna variante de. Lo que me está confundiendo es la siguiente:
opendir de recursos (string $ ruta [, resource $ contexto])
devuelve un recurso gestor de directorio en caso de éxito, en caso de fallo.
Si la ruta no es un directorio válido o el directorio no se puede abrir debido a restricciones de permisos o errores del sistema de archivos, opendir() devuelve FALSO y genera un error de PHP de nivel E_WARNING. Puede suprimir la salida de error de opendir() anteponiendo '@' al frente del nombre de la función .
de http://php.net/manual/en/function.opendir.php.
¿Necesito detectar el error PHP generado del nivel E_WARNING mencionado allí, o es tonto? No entiendo por qué volvería falso y arrojaría un error. ¿No debería el error arrojarlo para que no regrese normalmente?
Este es un ejemplo de la incoherencia intrínseca de PHP, que definitivamente es un lenguaje * scripting *. No tomarás advertencias con try ... catch. Las excepciones y los errores/advertencias son parte de dos mecanismos diferentes, y las excepciones se agregaron más adelante. Es un desastre. Sea ** muy ** cuidadoso escribiendo cosas en PHP: los idiomas en los que es experto (C++/C#) son consistentes, PHP no lo es. Cuidadoso. – gd1
Tenga cuidado con '@' para manejar "errores". Esto suprimirá todos los errores, no solo las advertencias. Vea la alerta en el Manual de PHP: http://www.php.net/manual/en/language.operators.errorcontrol.php –
. Sabía que algo gracioso estaba sucediendo allí. El primer sitio que leí al respecto llamó a E_WARNING una excepción que me confunde. Gracias por el cara a cara chicos. –