Quelles sont les exceptions de Laravel?

En tant que développeur PHP, vous pouvez utiliser des exceptions, car elles vous permettent de remarquer que quelque chose ne va pas ou que l'utilisateur a agi de manière inhabituelle (comme une division par zéro). Sans exception, votre application finirait par présenter des erreurs indésirables et serait beaucoup plus difficile à déboguer. Il est également important d'arrêter immédiatement l'exécution et de prendre une autre mesure..

Les exceptions sont très simples et faciliteront la progression de votre développement. Lorsque vous apprendrez à utiliser les exceptions, cela fera partie de votre développement..

Qu'est-ce qu'une exception?

Je pense que Martin Fowler donne la meilleure définition des exceptions:

Les exceptions signalent quelque chose en dehors des limites attendues du comportement du code en question.

Exactement, en fait, une exception est un événement qui se produit pendant l'exécution d'un programme et qui perturbe le flux normal des instructions du programme. Lorsque vous jeter (créez un objet exception et remettez-le au système d’exécution) une exception, le système capture en recherchant le gestionnaire approprié et en renvoyant le message approprié.

try // le code va ici catch (Exception $ e) // si une exception s'est produite dans le bloc try ci-dessus 

Quand avons-nous besoin d'utiliser des exceptions?

Utilisez des exceptions lorsque votre système est confronté à des circonstances exceptionnelles qui l'empêchent de prendre le relais. Nous utilisons les exceptions uniquement lorsque le système n'est pas en mesure de déterminer ce qui s'est passé. Martin Fowler estime que "si un échec est le comportement attendu, vous ne devriez pas utiliser d'exceptions". Cela signifie que vous devez utiliser des exceptions pour lesquelles vous ne pouvez pas déterminer l'erreur. Les exceptions ne doivent être utilisées que dans des circonstances exceptionnelles.

Remarque: Les exceptions ne conviennent pas pour la gestion des opérations logiques..

Pour un système comme la validation des entrées, utiliser des exceptions est faux. Tout d'abord, le texte d'entrée sera déterminé et, dans une application comme celle-ci, nous devrions signaler un ensemble d'erreurs au lieu d'une seule erreur. Je crois en l'élimination de l'utilisation des exceptions dans toutes les circonstances où nous pourrions nous attendre à des échecs de validation.

Il est très important de capturer une exception, car si vous ne capturez pas une exception, le système renverra une erreur. L'opération de capture doit être aussi proche que possible du point de défaillance.

Quelles sont les exceptions Laravel?

Laravel utilise gestionnaire d'exception, qui est une classe dans App \ Exceptions \ Handler.php. Cette classe contient deux méthodes principales (le renderHttpException La méthode, qui est utilisée pour toutes les exceptions HTTP, telles que 404 et 503, est dans la classe parente de Handler). Le premier est rapport, qui est utilisé pour consigner les exceptions ou les envoyer à un service externe. Voici un exemple de la méthode de rapport:

 public function report (Exception $ e) if ($ e instanceof CustomException) // return parent :: report ($ e);  

Le second est rendre. La méthode de rendu est chargée de convertir une exception donnée en une réponse HTTP à renvoyer au navigateur. Voici un exemple de la méthode de rendu:

fonction publique render ($ request, Exception $ e) if ($ e instanceof CustomException) return response () -> view ('errors.custom', [], 500);  return parent :: render ($ request, $ e);  

Remarque: vous pouvez utiliser le $ dontReport propriété du gestionnaire d'exceptions pour ignorer les exceptions par type.

Vous pouvez remplacer les méthodes d'exception Laravel dans votre propre exception de la manière suivante:

fonction publique render ($ request, Exception $ e) if (config ('app.debug')) return parent :: render ($ request, $ e);  return $ this-> handle ($ request, $ e);  

Cela rendra quand config debug est vrai.

Comment créer votre propre exception Laravel?

Vous devrez peut-être créer votre propre classe d'exception. Vous devez étendre la classe Exception de base de Laravel. J'ai créé une classe abstraite qui se comportera comme la classe de base de notre classe Exception personnalisée. Créer un fichier dans App / Exceptions / monException.php:

espace de noms App \ Exceptions; utiliser une exception; classe abstraite monException extended Exception protected $ id; protégé $ détails; fonction publique __construct ($ message) parent :: __ construct ($ message);  fonction protégée create (array $ args) $ this-> id = array_shift ($ args); $ error = $ this-> errors ($ this-> id); $ this-> details = vsprintf ($ error ['context'], $ args); retourne $ this-> details;  erreur de fonction privée ($ id) $ data = ['not_found' => ['context' => 'La ressource demandée est introuvable, mais peut être disponible à nouveau. Les demandes ultérieures du client sont autorisées. ',] //…]; retourne $ data [$ id];  

Et votre classe d'exception:

espace de noms App \ Exceptions; class NotFoundmonException prolonge monException fonction publique __construct () $ message = $ this-> create (func_get_args ()); parent :: __ construct ($ message);  

Vous pouvez utiliser la classe ci-dessus dans votre code:

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

Outre la classe Exception Laravel core, vous pouvez utiliser le package Assertion. Cela peut être utilisé comme classe d'exception tierce; vous pouvez l'utiliser pour sauter des spaghettis si des blocs dans votre code.

Pour installer le package d'assertion, vous devez exécuter la commande suivante:

compositeur besoin de beberlei / assert 

Par exemple, si vous souhaitez vérifier l’adresse électronique d’un utilisateur, procédez comme suit:

utilisez Assert \ Assertion; utilisez Assert \ AssertionFailedException; //… try Assertion :: email ($ value, "La valeur doit être une adresse e-mail valide");  catch (AssertionFailedException $ e) $ e-> getValue (); // la valeur qui a causé l'échec $ e-> getConstraints (); // les contraintes supplémentaires de l'assertion.  

Conclusion

Indépendamment de la langue que vous choisissez d'utiliser, les exceptions sont très importantes à comprendre car elles nous aident à contrôler l'exécution du flux d'une application..

De plus, ils nous aident à enregistrer les problèmes lorsqu'ils surviennent et à rendre notre application plus robuste..

Comme vous pouvez le constater à partir des travaux abordés dans ce didacticiel, Laravel est un framework qui offre une excellente fonctionnalité de gestion des exceptions..