Discussion:
continuer une boucle for en cas d'erreur
(trop ancien pour répondre)
Mihamina (R12y) Rakotomandimby
2007-04-15 23:11:51 UTC
Permalink
Bonjour,
J'ai php 4.3.10 avec Zend Engine 1.3.0.

Avec aussi phpmailer, la version actuelle.
Le but fut d'envoyer des mails en utilisant un smtp choisi.

J'envoie les mails dans une boucle for
Le problème c'est qu'au premier envoi qui pose problème (par exemple adresse
email qui contient un caractère non conforme), alors la boucle s'arrete.

J'aimerais contourner cela grace aux exceptions (try/catch), ou alors tout
autre moyen que vous me suggèrerez. En attendant, c'et intercepter les
exceptions qui me vient à l'esprit, mais mon installation de PHP semble ne
pas supporter cela: il vois une erreur de syntaxe au "try". J'en deduis
donc qu'il se peut que 4.3.10 ne supporte pas la gestion des exceptions. Ou
pourrais-je trouver une information sur la version de PHP à partir de
laquelle les exceptions sont gérées? Ou alors il y a un paramètre à régler
dans php.ini?...

Merci d'avance.
Olivier Miakinen
2007-04-15 23:19:38 UTC
Permalink
Post by Mihamina (R12y) Rakotomandimby
J'ai php 4.3.10 avec Zend Engine 1.3.0.
Avec aussi phpmailer, la version actuelle.
Le but fut d'envoyer des mails en utilisant un smtp choisi.
J'envoie les mails dans une boucle for
Le problème c'est qu'au premier envoi qui pose problème (par exemple adresse
email qui contient un caractère non conforme), alors la boucle s'arrete.
Et la boucle, tu ne peux pas la gérer toi-même ? Parce qu'il me semble
que le meilleur moyen pour permettre que la boucle continue, c'est de ne
jamais demander à ce qu'elle s'arrête. :-p
Post by Mihamina (R12y) Rakotomandimby
J'aimerais contourner cela grace aux exceptions (try/catch), [...]
mais mon installation de PHP semble ne pas supporter cela: [...]
il se peut que 4.3.10 ne supporte pas la gestion des exceptions. Ou
pourrais-je trouver une information sur la version de PHP à partir de
laquelle les exceptions sont gérées?
RTFM ? Le tout premier mot du premier paragraphe de la doc sur les
exceptions dans le manuel, c'est « PHP 5 » :
http://www.php.net/manual/fr/language.exceptions.php
Mihamina Rakotomandimby (R12y)
2007-04-16 09:05:55 UTC
Permalink
Post by Olivier Miakinen
Post by Mihamina (R12y) Rakotomandimby
J'ai php 4.3.10 avec Zend Engine 1.3.0.
Avec aussi phpmailer, la version actuelle.
Le but fut d'envoyer des mails en utilisant un smtp choisi.
J'envoie les mails dans une boucle for
Le problème c'est qu'au premier envoi qui pose problème (par exemple
adresse email qui contient un caractère non conforme), alors la boucle
s'arrete.
Et la boucle, tu ne peux pas la gérer toi-même ? Parce qu'il me semble
que le meilleur moyen pour permettre que la boucle continue, c'est de ne
jamais demander à ce qu'elle s'arrête. :-p
Pour l'envoi d'emails, ça ne peut pas se faire comme ça. Le risque de se
faire blacklister est plus que réel. La politique de cette section du
programme que j'écris est d'envoyer et à la moindre erreur, passer à
l'envoi _suivant_ :
- pas question de revenir au début,
- pas question d'insister sur un envoi à problème.
Post by Olivier Miakinen
Post by Mihamina (R12y) Rakotomandimby
J'aimerais contourner cela grace aux exceptions (try/catch), [...]
mais mon installation de PHP semble ne pas supporter cela: [...]
il se peut que 4.3.10 ne supporte pas la gestion des exceptions.
RTFM ? Le tout premier mot du premier paragraphe de la doc sur les
http://www.php.net/manual/fr/language.exceptions.php
Attends. Quand je chercche avec un truc du genre "exception PHP",
effectivement je tombe dessus. Par contre, quand il dit:

PHP 5 a une gestion des exceptions similaire à ce qu'offrent les autres
langages de programmation.

ça ne me dit pas à partir de quelle version les exceptions sont gérées ni
comment sont gérées les exceptions dans des versions antérieures.

Merci pour les indications.
Olivier Miakinen
2007-04-16 10:20:26 UTC
Permalink
Post by Mihamina Rakotomandimby (R12y)
Post by Olivier Miakinen
Et la boucle, tu ne peux pas la gérer toi-même ? Parce qu'il me semble
que le meilleur moyen pour permettre que la boucle continue, c'est de ne
jamais demander à ce qu'elle s'arrête. :-p
Pour l'envoi d'emails, ça ne peut pas se faire comme ça. Le risque de se
faire blacklister est plus que réel.
Tu n'as pas dû comprendre ma remarque, parce que ma proposition ne
change strictement rien à priori au comportement des envois, par
rapport à ce que tu cherches à faire.

D'après ce que je comprends, il y a dans phpmailer un truc du genre :

for (adresse dans liste d'adresses) {
envoyer un message à l'adresse
en cas d'échec, quitter la boucle
}

Et je te propose de réécrire cette boucle en :

for (adresse dans liste d'adresses) {
envoyer un message à l'adresse
}
Post by Mihamina Rakotomandimby (R12y)
La politique de cette section du
programme que j'écris est d'envoyer et à la moindre erreur, passer à
- pas question de revenir au début,
- pas question d'insister sur un envoi à problème.
Je ne dis pas le contraire. Voir plus haut.
Post by Mihamina Rakotomandimby (R12y)
Post by Olivier Miakinen
RTFM ? Le tout premier mot du premier paragraphe de la doc sur les
http://www.php.net/manual/fr/language.exceptions.php
Attends. Quand je chercche avec un truc du genre "exception PHP",
PHP 5 a une gestion des exceptions similaire à ce qu'offrent les autres
langages de programmation.
ça ne me dit pas à partir de quelle version les exceptions sont gérées ni
comment sont gérées les exceptions dans des versions antérieures.
Tu as raison dans l'absolu, bien sûr. Parler de PHP 5 exclusivement
n'est pas une preuve que ça n'existait pas du tout en PHP 4. Mais
mon expérience de la doc PHP me fait dire que s'ils n'en parlent pas
c'est *vraiment* que ça n'existe pas. C'est le cas dans toutes les
docs sur des fonctions.

Continuer la lecture sur narkive:
Loading...