Bonjour,
Toute ma belle explication qui a disparue , du coup version courte :
Je fais un script pour importer une liste de scorm en format zip. Un de mes scorms est corrompu ce qui provoque une erreur et une trace (sans vraiment de rapport) vers shutdown_manager.php
Après recherche, le problème de scorm corrompu déclenche un vieux 'die' dans scormlib.php :
die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($this->resparser)), xml_get_current_line_number($this->resparser)));
Je l'ai donc remplacer par un : throw new Exception('XML Parse Error'); que je catch dans course/modlib.php fonction add_moduleinfo pour pouvoir faire un $DB->force_transaction_rollback(); et passer proprement a mon tour de boucle suivant.
Avantage :
- Mon script fonctionne de manière globale (malgré quelques erreurs qui seront dans les logs)
- Si on ne catch pas l'erreur on obtient une vraie trace vers le throw.
Question :
- Est ce qu'il existe un moyen de faire un 'catch' de die ? (Pour éviter de trop modifier les fichiers de moodle, ça commence à en faire plusieurs déjà :s)
- Qui contacter pour suggérer cette modification ? (le fichier indique 1999 onwards Roberto Pinna, je ne sais pas si 20 ans après c'est toujours lui qui s'occupe de ca )
- Est ce qu'il y a une façon particulière de gérer les erreur dans moodle ?
Bonne journée,
Mathieu