Les exceptions de premier niveau

Billet

La version 2.28 apporte une nouvelle gestion des exceptions et erreurs de premier niveau,

Après quelques balbutiements en version 2.27, une première avancée dans la gestion et la reconnaissance plus fine des erreurs bloquantes de l'application est introduite en version 2.28. Avec l'ajout d'une classe spéciale au gestionnaire d'erreur PHP, la majorité des erreurs générées par la racine de l'application ou de son cœur est désormais interceptée par des classes d'exception renvoyant un code et un message unique. Tous ces codes et messages sont regroupés dans un énumérateur. Les exceptions sont si possible traitées suivant différents paramètres (mode debug, mode CLI...) puis renvoyées à l'utilisateur.

exception.png, oct. 2023
Fault class in debug mode
Liste d'erreurs :

susceptible de changer dans les versions à venir

  • 503 : AppException : Site temporarily unavailable
  • 400 : BadRequestException : Bad Request
  • 570 : BlogException : Blog handling error
  • 551 : ConfigException : Application configuration error
  • 409 : ConflictException : Conflict
  • 553 : ContextException : Application context error
  • 560 : DatabaseException : Database connection error
  • 404 : NotFoundException : Not Found
  • 412 : PreconditionException : Precondition Failed
  • 552 : ProcessException : Application process error
  • 561 : SessionException : Session handling error
  • 571 : TemplateException : Template handling error
  • 401 : UnauthorizedException : Unauthorized
  • 500 : InternalServerException : Internal Server Error

Deux grandes catégories sont présentes avec :

  • 4xx : Erreur client
  • 5xx : Erreur serveur
Traitement

Les exceptions et erreurs interceptées par l'application sont alors envoyées à la classe Fault pour traitement et affichage à l'utilisateur. Il est possible d'intervenir avant l'affichage en définissant dans la constante DC_ERRORFILE un fichier à appeler, ce fichier php aura accès à toute la classe Fault.
Si la plateforme à déjà déclaré un gestionnaire d'exception à PHP, il sera alors utilisé.

Incompatibilité

Les méthodes de la classe Fault introduites en version 2.27 sont déjà obsolètes et tout simplement supprimées.

Le contenu de ce document a été écrit suivant le code de la version 2.28 de Dotclear.

La discussion continue ailleurs

URL de rétrolien : https://dotclear.watch/trackback/443