JeuWeb - Crée ton jeu par navigateur
[Résolu] Savoir qui appelle une méthode - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Savoir qui appelle une méthode (/showthread.php?tid=4115)

Pages : 1 2


RE: Savoir qui appelle une méthode - My Hotel - 21-06-2009

OK, mais comment je fais à savoir quelle méthode a généré l'erreur, et a donc appelé ma méthode de log? Je suis sûr que c'est hyper simple en plus, mais je bloque Smile


RE: Savoir qui appelle une méthode - wild-D - 21-06-2009

tu regarde la pile; ce sera surement l'avant-dernière entrée (vu que la dernière ça sera je suppose ta fonction de log si j'ai bien compris ce que tu fais). ça te donnera dans quel context on a appelé ta fonction de log.


RE: Savoir qui appelle une méthode - My Hotel - 21-06-2009

Oui c'est pas faux, j'ai compris. Je vais revoir ma méthode de log, mais au niveau conception, c'est vrai que c'est assez inutile.
Merci beaucoup, pour moi c'est résolu Smile


RE: [Résolu]Savoir qui appelle une méthode - naholyr - 21-06-2009

Sinon au lieu d'appeler ta fonction tu lèves une exception, et tu log quelque part son __toString(), qui contient la pile d'appel Wink

Exemple :
Code PHP :
<?php 
// Dans le script "racine" :
try {
main();
}
catch (
Exception $e) {
// Logger le contenu de l'exception : le message + la pile
log_erreur($e->__toString());
}


// Quelque part dans tes fonctions :
$db = connect_db();
if (!
$db) {
throw new
Exception('Connexion impossible à la base de données');
}

Et si PHP était bien fait, toute erreur fatale mènerait à une exception au lieu d'une vieille fatal error poukrave inloggable, mais ce n'est pas le cas hélas Wink


RE: [Résolu]Savoir qui appelle une méthode - jo_link_noir - 04-07-2009

(21-06-2009, 09:51 PM)naholyr a écrit : Et si PHP était bien fait, toute erreur fatale mènerait à une exception au lieu d'une vieille fatal error poukrave inloggable, mais ce n'est pas le cas hélas Wink

J'avais lu un truc sur developpez.com : basculer les erreurs en exception
ou avec ErrorException


RE: [Résolu] Savoir qui appelle une méthode - wild-D - 04-07-2009

me semble que ça marche pas avec les erreurs fatales (on peut attraper que les erreurs que l'on peut attraper avec set_error_handler donc pas les erreurs fatales de compilation et autre truc du genre Tongue)


RE: [Résolu] Savoir qui appelle une méthode - jo_link_noir - 04-07-2009

Mince, en plus c'est marqué dans la doc ><
Manuel PHP a écrit :Les types d'erreur suivants ne peuvent pas être gérés avec cette fonction : E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING ainsi que la plupart des E_STRICT d'un fichier lorsque set_error_handler() est appelé.
Me semblais bizarre aussi que naholyr dise ça, en fait c'est moi qui est pas tout lu '^.^