Géométriquement le forum Dlz9
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment : -29%
PC portable – MEDION 15,6″ FHD Intel i7 ...
Voir le deal
499.99 €

Aller en bas
Dlzlogic
Dlzlogic
Admin
Messages : 9526
Date d'inscription : 26/04/2019
Age : 80
Localisation : Proville
http://www.dlzlogic.com

Gestion des erreurs Empty Gestion des erreurs

Mar 30 Aoû - 16:35
Bonjour,
Réf. : https://les-mathematiques.net/vanilla/index.php?p=/discussion/2331389/bonne-pratique-pour-ecrire-une-fonction
C'est une question très intéressant, mais le réponse ne peut pas se faire en trois phrases.
Il y a plusieurs raisons. Par exemple, une fonction peut ne jamais produire d'erreur, par exemple calcul de distance entre 2 points. C'est avant l'appel de la fonction qu'il faut tester la validité des points.
Il y a des fonctions qui renvoient une valeur, résultat d'un calcul, d'autres qui interviennent sur des données extérieures, auquel cas, il est bien préférable de travailler sur une copie et renvoyer un code de résultat qui sera testé au retour de la fonction, il y a des fonctions récursives, le code retour est alors la fin de la récurrence.
Il y a des cas où il faut prévoir un "état du traitement" en variable globale de façon à pouvoir terminer le processus en cas d'erreur.
Bref, il y a, à mon avis, autant de réponses possibles que de contextes. Je dirais même qu'il est dangereux de se fixer une règle générale, sauf si on a parfaitement analysé le cas des erreurs et décrit et listé tous les contextes possibles et la conduite à tenir.
Il ne faut oublier le cas où l'erreur peut être apparente ou momentanée, c'est encore un cas particulier.
Dlzlogic
Dlzlogic
Admin
Messages : 9526
Date d'inscription : 26/04/2019
Age : 80
Localisation : Proville
http://www.dlzlogic.com

Gestion des erreurs Empty Re: Gestion des erreurs

Mar 30 Aoû - 16:48
Raoul.S a écrit:En gros les fonctions doivent être des boîtes noires pour celui qui les utilise, on sait le type de données qu'elles renvoient et les exceptions qu'elles lèvent mais pas leur fonctionnement interne.
Là j'applaudis des deux mains.
Personnellement, j'ai très peu utilisé la procédure Try ... Catch ... Except. En fait, je crois que je l'ai limité à des très localisés, c'est à dire des bugs que je n'arrivais pas reproduire. Le principe est que si ça se reproduit, j'aurais au moins une piste de recherche. Ce genre de phénomène est rare.

Je continue :
Je ne sais pas si j'utilise exactement le bon vocabulaire, mais son texte tourne autour d'une fonction qui peut lever l'exception "division par 0".
Ce cas est classique, mais il faut en parler. Si on fait une division par 0, la machine va s'en rendre compte et l'exécution s'arrêtera. Par contre, si le code fait une division par 0, c'est qu'il y a une faute d'analyse. C'est le boulot du programmeur d'écrire un bon code, résultat d'une bonne analyse, et non à la machine de le tester. La division par 0 n'est pas une faute de calcul mais une faute d'analyse.

A mon avis, le problème du test d'erreur est important pour les extensions futures, utilisation de fonctions déjà écrites. C'est ça qu'il faut avoir en tête.
Dlzlogic
Dlzlogic
Admin
Messages : 9526
Date d'inscription : 26/04/2019
Age : 80
Localisation : Proville
http://www.dlzlogic.com

Gestion des erreurs Empty Re: Gestion des erreurs

Mar 30 Aoû - 17:12
Code:
$name = "monDossier/*.bmp";
$images = scandir($name);
foreach ($images as $image) {
    // traitement
}
Je ne suis pas d'accord avec cette méthode. S"il n'y a pas de BMP dans le dossier, on n'aura rien du tout et on peut se demander longtemps pourquoi. La moindre des choses est de tester l'existence du dossier et de la présence du BMP à traiter. Ca fait partie des pièges de la programmation. Bref, ce genre de code est à réserver aux petits exo qui ne servent qu'en DM.
Contenu sponsorisé

Gestion des erreurs Empty Re: Gestion des erreurs

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum