J'ai récemment travaillé avec Exceptions. Je pense qu'il est logique d'enregistrer des exceptions non interceptées, car cela aide grandement les développeurs à prendre en charge d'éventuels problèmes dans la source en consultant simplement le journal des exceptions. Cependant, lorsqu'une exception est traitée, est-il nécessaire de l'enregistrer plus longtemps? Oui, dans une certaine mesure. Si vous avez de "mauvais" développeurs qui écrivent du code contenant des bogues, alors en attrapant simplement des exceptions, vous les ferez disparaître. Par exemple:Journalisation interceptée et exceptions non interceptées?
try
{
fopen('/path/to/file','w');
}
catch (Exception $e)
{
// Display an error to user
}
Le code ci-dessus est PHP. Le fait est que ce genre de code, imo, ne devrait pas exister. Les exceptions sont censées être exceptionnelles et se produire rarement, mais avec ce code elles se produisent plus que rarement. Par exemple, le développeur ne vérifie pas si le fichier existe et il ne vérifie pas s'il a les permissions pour écrire dessus. Au lieu de cela, il devrait être:
try
{
if (file_exists('/path/to/file') && is_writable('/path/to/file'))
fopen('/path/to/file','w');
else
// Display an error to user about file not existing or not being writable
}
catch (Exception $e)
{
// Display an error to user about an unexpected error
}
Cela fait beaucoup de sens maintenant. L'exception est lancée et interceptée uniquement si elle est exceptionnelle (par exemple, panne de serveur, panne de courant, etc.). Mais que se passe-t-il si le développeur utilise Exceptions pour tout et les vérifications omises - est-ce qu'il y a un moyen pour moi de consigner les exceptions interceptées?
Je ne veux pas que les développeurs mettent tout dans des blocs try-catch pour "résoudre" les problèmes. Je veux qu'ils vérifier explicitement ce qu'ils doivent vérifier - et laisser des exceptions pour des situations exceptionnelles comme une défaillance matérielle, panne du serveur, etc.
set_exception_handler (http://www.php.net/manual/fr/function.set-exception-handler.php) – troelskn