<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="https://dotclear.watch/feed/rss2/xslt" ?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>DotclearWatch / Blog - Mot-clé - error</title>
    <link>https://dotclear.watch/</link>
    <atom:link href="https://dotclear.watch/feed/tag/error/rss2" rel="self" type="application/rss+xml" />
    <description>Suivez l'évolution du moteur de blogs Dotclear.</description>
    <language>fr</language>
    <pubDate>Sun, 19 Apr 2026 21:23:09 +0200</pubDate>
    <copyright>Tous droits réservés © Jean-Christian Denis</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>Dotclear</generator>
          <item>
        <title>Les exceptions de premier niveau</title>
        <link>https://dotclear.watch/Billet/Les-exceptions-de-premier-niveau-en-2.28</link>
        <guid isPermaLink="false">urn:md5:3ab7d5caaed81f3c359cbef84439b582</guid>
        <pubDate>Fri, 13 Oct 2023 08:00:00 +0200</pubDate>
        <dc:creator>Jean-Christian Denis</dc:creator>
                  <category>2.28</category>
                          <category>2.28</category>
                  <category>error</category>
                  <category>exception</category>
                  <category>fault</category>
                <description>&lt;p&gt;La &lt;a href=&quot;https://dotclear.watch/Billet/Release-2.28&quot;&gt;version 2.28&lt;/a&gt; apporte une nouvelle gestion des exceptions et erreurs de premier niveau,&lt;/p&gt; &lt;p&gt;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.&lt;br /&gt;&lt;/p&gt;&lt;a href=&quot;https://dotclear.watch/public/2.28/exception.png&quot; title=&quot;exception.png, oct. 2023&quot;&gt;&lt;figure class=&quot;media-center&quot;&gt;&lt;img src=&quot;https://dotclear.watch/public/2.28/.exception_m.png&quot; alt=&quot;exception.png, oct. 2023&quot; title=&quot;exception.png, oct. 2023&quot; /&gt;&lt;figcaption&gt;Fault class in debug mode&lt;/figcaption&gt;&lt;/figure&gt;&lt;/a&gt;

&lt;h5&gt;Liste d'erreurs :&lt;/h5&gt;

&lt;p&gt;&lt;em&gt;susceptible de changer dans les versions à venir&lt;/em&gt;&lt;br /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;503 : AppException : Site temporarily unavailable&lt;/li&gt;
&lt;li&gt;400 : BadRequestException : Bad Request&lt;/li&gt;
&lt;li&gt;570 : BlogException : Blog handling error&lt;/li&gt;
&lt;li&gt;551 : ConfigException : Application configuration error&lt;/li&gt;
&lt;li&gt;409 : ConflictException : Conflict&lt;/li&gt;
&lt;li&gt;553 : ContextException : Application context error&lt;/li&gt;
&lt;li&gt;560 : DatabaseException : Database connection error&lt;/li&gt;
&lt;li&gt;404 : NotFoundException : Not Found&lt;/li&gt;
&lt;li&gt;412 : PreconditionException : Precondition Failed&lt;/li&gt;
&lt;li&gt;552 : ProcessException : Application process error&lt;/li&gt;
&lt;li&gt;561 : SessionException : Session handling error&lt;/li&gt;
&lt;li&gt;571 : TemplateException : Template handling error&lt;/li&gt;
&lt;li&gt;401 : UnauthorizedException : Unauthorized&lt;/li&gt;
&lt;li&gt;500 : InternalServerException : Internal Server Error&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Deux grandes catégories sont présentes avec :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;4xx : Erreur client&lt;/li&gt;
&lt;li&gt;5xx : Erreur serveur&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;Traitement&lt;/h5&gt;

&lt;p&gt;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.&lt;br /&gt;
Si la plateforme à déjà déclaré un gestionnaire d'exception à PHP, il sera alors utilisé.&lt;br /&gt;&lt;/p&gt;

&lt;h5&gt;Incompatibilité&lt;/h5&gt;

&lt;p&gt;Les méthodes de la classe Fault introduites en version 2.27 sont déjà obsolètes et tout simplement supprimées.&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;&lt;q&gt;Le contenu de ce document a été écrit suivant le code de la version 2.28 de Dotclear.&lt;/q&gt;&lt;/em&gt;&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>La classe d'erreur</title>
        <link>https://dotclear.watch/Billet/La-classe-d-erreur</link>
        <guid isPermaLink="false">urn:md5:00e7d0106a099f7a69db506cc0d1c62d</guid>
        <pubDate>Fri, 14 Jul 2023 09:11:00 +0100</pubDate>
        <dc:creator>Jean-Christian Denis</dc:creator>
                  <category>2.27</category>
                          <category>2.27</category>
                  <category>erreur</category>
                  <category>error</category>
                  <category>fault</category>
                <description>&lt;p&gt;Dotclear &lt;a href=&quot;https://dotclear.watch/Billet/Release-2.27&quot;&gt;version 2.27&lt;/a&gt; introduit une classe d'erreur nommée &lt;code&gt;Fault&lt;/code&gt; en remplacement de la fonction &lt;code&gt;__error()&lt;/code&gt; et du fichier &lt;code&gt;error.php&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;La classe &lt;code&gt;Dotclear\Fault&lt;/code&gt; n'est pas à proprement parler un gestionnaire d'erreur, elle ne se substitue pas aux Exception et Error. Elle va simplement permettre à l'application d'uniformiser son comportement sur certains défauts (erreurs) connus. Normalement seules la classe &lt;code&gt;Dotclear\App&lt;/code&gt; et les classes &lt;code&gt;Dotclear\Core\Xxx\Utility&lt;/code&gt; l'utilisent. Elle est utilisée lors de défauts ne permettant pas de continuer la bonne exécution du script.&lt;br /&gt;&lt;/p&gt;

&lt;h5&gt;Constantes&lt;/h5&gt;

&lt;p&gt;La classe définit des constantes de niveau d'erreur, ces niveaux seront reportés en code de réponse HTTP le cas échéant, et sont toutes de niveau supérieur à 500 (Internal server error).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;550&lt;/strong&gt; : &lt;code&gt;UNDEFINED_ISSUE&lt;/code&gt; : Uncoded or undefined error (before as 0)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;555&lt;/strong&gt; : &lt;code&gt;SETUP_ISSUE&lt;/code&gt; : Server configuration issue (before as 0)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;560&lt;/strong&gt; : &lt;code&gt;CONFIG_ISSUE&lt;/code&gt; : Dotclear configuration file issue (before as 10)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;565&lt;/strong&gt; : &lt;code&gt;DATABASE_ISSUE&lt;/code&gt;  :Database connexion issue (before as 20)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;570&lt;/strong&gt; : &lt;code&gt;BLOG_ISSUE&lt;/code&gt; : Blog definition issue (before as 30)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;575&lt;/strong&gt; : &lt;code&gt;TEMPLATE_CREATION_ISSUE&lt;/code&gt; : Template file creation issue (before as 40)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;580&lt;/strong&gt; : &lt;code&gt;THEME_ISSUE&lt;/code&gt; : Theme issue (before as 50)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;585&lt;/strong&gt; : &lt;code&gt;TEMPLATE_PROCESSING_ISSUE&lt;/code&gt; : Template processing issue (before as 60)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;590&lt;/strong&gt; : &lt;code&gt;BLOG_OFFLINE&lt;/code&gt; : Blog is offline (before as 70)&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;Lancement&lt;/h5&gt;

&lt;p&gt;Il y a deux façons lancer un défaut, par la création d'une instance en passant en arguments le titre, le message et le niveau, ou de manière statique en passant en arguments le titre et l'exception.&lt;br /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;&amp;lt;?php
use Dotclear\Fault;

// Dynamique
if (!defined(&amp;#039;DC_CONTEXT_ADMIN&amp;#039;)) {
    new Fault(&amp;#039;Server error&amp;#039;, &amp;#039;Site temporarily unavailable&amp;#039;, Fault::SETUP_ISSUE);
}
// Statique
try {
    if ($a &amp;lt; 1) {
        throw new Exception(&amp;#039;a est inferieur à 1&amp;#039;, Fault::CONFIG_ISSUE);
    }
    if ($a &amp;gt; 10) {
        throw new Exception(&amp;#039;a est supérieur à 10&amp;#039;, Fault::CONFIG_ISSUE);
    }
 } catch (Exception $e) {
    Fault::throw(&amp;#039;Mauvaise valeur de a&amp;#039;, $e);
 }&lt;/code&gt;&lt;/pre&gt;

&lt;h5&gt;Retour&lt;/h5&gt;

&lt;p&gt;La classe permet plusieurs façons de reporter le défaut.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Si le script est exécuté en mode CLI (ligne de commande) comme pour une mise à jour depuis une console, la classe répondra par un simple message dans la console.&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;Si le script est exécuté normalement, une page web indiquant le niveau d'erreur, son titre et un message explicatif sera retourné avec en code de réponse HTTP le niveau d'erreur.&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;Si au moment du lancement de la classe la constante &lt;code&gt;DC_DEBUG&lt;/code&gt; est déjà définie et est à &lt;strong&gt;true&lt;/strong&gt;, l'erreur php sera retournée, comme si la classe n'existait pas.&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;Personnalisation&lt;/h5&gt;

&lt;p&gt;Il est possible de personnaliser la page web de défaut. Pour cela il faut renseigner la constante &lt;code&gt;DC_ERRORFILE&lt;/code&gt; en la définissant avec le chemin complet vers un fichier qui sera inclu dans la méthode retournant le défaut. Ce fichier devra rendre à la sortie standard de PHP (echo) du code HTML complet et valide. Les variables &lt;code&gt;$summary&lt;/code&gt;, &lt;code&gt;$message&lt;/code&gt; et &lt;code&gt;$code&lt;/code&gt; lui sont accessibles.&lt;br /&gt;&lt;/p&gt;&lt;figure class=&quot;media-center&quot;&gt;&lt;img src=&quot;https://dotclear.watch/public/2.27/.class_fault_http_m.png&quot; alt=&quot;class_fault_http.png, juil. 2023&quot; title=&quot;class_fault_http.png, juil. 2023&quot; /&gt;&lt;figcaption&gt;Reponse HTML de la classe Fault&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;&lt;q&gt;Le contenu de ce document a été écrit suivant le code de la version 2.27 de Dotclear.&lt;/q&gt;&lt;/em&gt;&lt;/p&gt;</description>
        
              </item>
      </channel>
</rss>
