¿Qué son las excepciones Laravel?

Como desarrollador de PHP, puede usar excepciones, ya que le permiten notar cuándo algo salió mal o el usuario actuó de una manera inusual (como la división por cero). Sin excepciones, su aplicación terminará presentando errores no deseados y será mucho más difícil de depurar. También es importante que detenga la ejecución inmediatamente y tome otro curso de acción.

Las excepciones son realmente simples y facilitarán el progreso de su desarrollo. Cuando aprenda a usar excepciones, esto será una parte habitual de su desarrollo..

Qué es una excepción?

Creo que la mejor definición para las excepciones está dada por Martin Fowler:

Las excepciones señalan algo fuera de los límites esperados de comportamiento del código en cuestión.

Exactamente, de hecho, una excepción es un evento, que ocurre durante la ejecución de un programa, que interrumpe el flujo normal de las instrucciones del programa. Cuando tú lanzar (cree un objeto de excepción y entréguelo al sistema de tiempo de ejecución) una excepción, el sistema captura Para ello, busque el controlador adecuado y devuelva el mensaje correspondiente..

intente // el código va aquí captura (Excepción $ e) // si ocurrió una excepción en el bloque de prueba anterior 

¿Cuándo necesitamos usar excepciones??

Use excepciones cuando su sistema se enfrente a circunstancias excepcionales que eviten que el sistema tome el control. Utilizamos excepciones solo cuando el sistema no puede determinar lo que ha sucedido. Martin Fowler cree que "si un error es un comportamiento esperado, entonces no debería estar usando excepciones". Esto significa que debe usar excepciones donde no pueda determinar el error. Las excepciones solo deben usarse en circunstancias excepcionales..

Nota: las excepciones no son buenas para manejar operaciones lógicas.

Para un sistema como validación de entrada, el uso de excepciones es incorrecto. En primer lugar, se determinará el texto de entrada y, en una aplicación como esta, deberíamos informar una colección de errores en lugar de un solo error. Creo en eliminar el uso de excepciones en cualquier circunstancia en la que podamos esperar fallos de validación.

Capturar una excepción es muy importante, porque si no capta una excepción, el sistema devolverá un error. La operación de captura debe estar lo más cerca posible del punto de falla..

Cuáles son las excepciones de Laravel?

Usos de Laravel manejador de excepciones, que es una clase en Aplicación \ Excepciones \ Handler.php. Esta clase contiene dos métodos principales (el renderHttpException El método, que se usa para todas las excepciones HTTP, como 404s y 503s, está en la clase principal de Handler). El primero es informe, que se utiliza para registrar excepciones o enviarlas a un servicio externo. Aquí hay un ejemplo del método de informe:

 informe de función pública (Excepción $ e) if ($ e instanceof CustomException) // return parent :: report ($ e);  

El segundo es hacer. El método de representación es responsable de convertir una excepción dada en una respuesta HTTP que debe enviarse de vuelta al navegador. Aquí hay un ejemplo del método de render:

función pública render ($ request, Exception $ e) si ($ e instanceof CustomException) return response () -> view ('errors.custom', [], 500);  return parent :: render ($ request, $ e);  

Nota: puede utilizar el $ dontReport propiedad del controlador de excepciones para ignorar las excepciones por tipo.

Puede anular los métodos de excepción de Laravel en su propia excepción de la siguiente manera:

función pública render ($ request, Exception $ e) if (config ('app.debug')) return parent :: render ($ request, $ e);  devolver $ this-> handle ($ request, $ e);  

Esto se procesará cuando la depuración de configuración sea verdadera.

Cómo crear tu propia excepción Laravel?

Puede que necesite crear su propia clase de excepción. Debe extenderse desde la clase de excepción base de Laravel: he creado una clase abstracta que se comportará como la clase base de nuestra clase de excepción personalizada. Crear un archivo en Aplicación / Excepciones / monException.php:

namespace App \ Exceptions; usar Excepción; la clase abstracta monException extiende la Excepción protected $ id; Detalles $ protegidos; función pública __construct ($ message) parent :: __ construct ($ message);  función protegida create (array $ args) $ this-> id = array_shift ($ args); $ error = $ this-> errores ($ this-> id); $ this-> details = vsprintf ($ error ['context'], $ args); devuelve $ this-> detalles;  errores de función privada ($ id) $ data = ['not_found' => ['context' => 'El recurso solicitado no se pudo encontrar pero podría estar disponible nuevamente en el futuro. Las solicitudes posteriores del cliente están permitidas. ',] //…]; devuelve $ datos [$ id];  

Y tu clase de excepción:

namespace App \ Exceptions; la clase NotFoundmonException extiende la excepción monException public function __construct () $ message = $ this-> create (func_get_args ()); padre :: __ construcción ($ mensaje);  

Puedes usar la clase anterior en tu código:

 try throw new \ App \ Exceptions \ NotFoundmonException ('not_found');  catch (\ App \ Exceptions \ NotFoundmonException $ e) return $ e-> getMessage ();  

Además de la clase de excepción Laravel Core, puede usar el paquete de aserción. Esto se puede utilizar como una clase de excepción de terceros; Puedes usar esto para saltar los espaguetis Si bloques en tu código.

Para instalar el paquete de aserción, debe ejecutar el siguiente comando:

compositor requiere beberlei / assert 

Por ejemplo, si desea verificar la dirección de correo electrónico de un usuario, puede hacer esto:

utilizar Assert \ Assertion; use Assert \ AssertionFailedException; // ... intente Aserción :: correo electrónico ($ valor, "El valor debe ser una dirección de correo electrónico válida");  catch (AssertionFailedException $ e) $ e-> getValue (); // el valor que causó el error $ e-> getConstraints (); // Las restricciones adicionales de la aserción.  

Conclusión

Independientemente del idioma que elija utilizar, las excepciones son muy importantes de entender, ya que nos ayudan a controlar la ejecución del flujo de una aplicación..

Además, nos ayudan a registrar problemas cuando ocurren y ayudan a que nuestra aplicación sea más robusta..

Como puede ver en el trabajo cubierto en este tutorial, Laravel es un marco que ofrece una gran funcionalidad de manejo de excepciones en la creación de aplicaciones web..