04-03-2010, 09:45 PM
Concernant la différence entre java et php au sujet des exceptions, la plus marquante est à mon avis qu'en java, tu es généralement obligé de catcher, le langage te l'impose. En php, tu fais ce que tu veux.
Le grand avantage des exceptions c'est que tu peux gérer le problème de différentes façons et à différents niveaux selon ce que tu veux faire. Pour reprendre l'exemple de Séphi-Chan, si tu rencontres une exception comme quoi une planète n'existe pas, alors dans un certain cas tu peux décider d'afficher une erreur à l'utilisateur, et dans un autre tu peux décider de rattraper ce problème en créant une nouvelle planète. Tu me diras, tu peux aussi faire ça avec des if. Le problème des if c'est que tu es obligé de les répéter à chaque fois que tu veux ravoir le même comportement. Avec les exceptions, tu as une occasion supplémentaire de regrouper les cas et n'écrire qu'une fois le code.
Admettons que nous avons un code comme celui-ci pour effectuer une série de requêtes dans la base de données. C'est classique...
Que se passe-t-il le jour où il faut changer de comportement en cas d'erreur ? Si à la place de rollback on doit arrêter un réacteur nucléaire ? Eh bien, il faut faire la modification trois fois. ET puis cette structure en conditions imbriquées n'est pas très pratique.
Si on utilise les exceptions, le code est tout de suite plus simple, plus clair et surtout, il n'y a qu'un seul bout de code à changer si on veut remplacer notre rollback par l'arrêt du réacteur nucléaire.:
Je sais pas si mes explications sont claires et si elles t'ont aidées...
Le grand avantage des exceptions c'est que tu peux gérer le problème de différentes façons et à différents niveaux selon ce que tu veux faire. Pour reprendre l'exemple de Séphi-Chan, si tu rencontres une exception comme quoi une planète n'existe pas, alors dans un certain cas tu peux décider d'afficher une erreur à l'utilisateur, et dans un autre tu peux décider de rattraper ce problème en créant une nouvelle planète. Tu me diras, tu peux aussi faire ça avec des if. Le problème des if c'est que tu es obligé de les répéter à chaque fois que tu veux ravoir le même comportement. Avec les exceptions, tu as une occasion supplémentaire de regrouper les cas et n'écrire qu'une fois le code.
Admettons que nous avons un code comme celui-ci pour effectuer une série de requêtes dans la base de données. C'est classique...
Code :
commencer une transaction
résultat1 = exécuter requête1
si résultat1 = erreur alors rollback
sinon {
résultat2 = exécuter requête2
si résultat2 = erreur alors rollback
sinon {
résultat3 = exécuter requête3
si résultat3 = erreur alors rollback
sinon {
traiter résultat1
traiter résultat2
traiter résultat3
commit
} // fin si 3
} // fin si 2
} // fin si 1
Que se passe-t-il le jour où il faut changer de comportement en cas d'erreur ? Si à la place de rollback on doit arrêter un réacteur nucléaire ? Eh bien, il faut faire la modification trois fois. ET puis cette structure en conditions imbriquées n'est pas très pratique.
Si on utilise les exceptions, le code est tout de suite plus simple, plus clair et surtout, il n'y a qu'un seul bout de code à changer si on veut remplacer notre rollback par l'arrêt du réacteur nucléaire.:
Code :
essayer {
commencer une transaction
résultat1 = exécuter requête1
résultat2 = exécuter requête2
résultat3 = exécuter requête3
traiter résultat1
traiter résultat2
traiter résultat3
commit
} rattraper (exception de requête) {
rollback
}
Je sais pas si mes explications sont claires et si elles t'ont aidées...
html, javascript, blagues, midi, etc. => http://quentinc.net/