Page 1 sur 1

Gestion personnalisée des exceptions PHP

Posté : 11 nov. 2008, 19:39
par Gofromiel
Bonjour à tous,

La classe WdException permet de lancer des exceptions tout en profitant des fonctionnalités de la classe WdDebug, et notamment des rapports d'incidents. Je vous invite à découvrir le framework WdCore, duquel est issue la classe.

La classe WdException étend la classe Exception et présente les fonctionnalités suivantes :

* Le message de l'exception est formaté et localisé (traduit) grâce à la classe WdLocale.
* Le message de l'exception est formaté de manière similaire aux erreurs personnalisées par la classe WdDebug.
* Les messages issus de la journalisation de la class WdDebug peuvent être ajoutés au message de l'exception.
* Un rapport d'incident peut être émit.

Je vous laisse découvrir tout ça : Gestion personnalisée des exceptions PHP

La classe est aussi simple à mettre en ouvre que la classe WdDebug :
define('WDDEBUG_SILENT', true);
define('WDDEBUG_REPORT_ADDRESS', '[email protected]');
define('WDEXCEPTION_WITH_LOG', true);

require_once 'wdexception.php';

set_exception_handler(array('WdDebug', 'exceptionHandler');
Un exemple :
function test($a)
{
    if ($a != 1)
    {
        throw new WdException('$a must be 1, "\1" given instead', $a);
    }
}

wd_log('A little message before the big crash');

test(13);
Qui nous donne :

Code : Tout sélectionner

Exception with the following message: $a must be 1, "13" given instead in G:\Weirdog\www\wd\_test\debug.php at line 19 Stack trace: #00 — /debug.php(25): test(13) Log: A little message before the big crash
Débuggez bien !

Posté : 11 nov. 2008, 19:41
par katagoto
c'est pas du multi-post ça ?

Posté : 11 nov. 2008, 19:43
par Gofromiel
Nan, c'est pas la même chose : Erreurs / Exceptions. Pourquoi, tu trouves que j'abuse ?

Posté : 11 nov. 2008, 20:00
par katagoto
non, je dois être fatigué et comme ça avait le même aspect xD

Si non, c'est hyper-interessant ^^