Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

continuer une boucle for en cas d'erreur

3 réponses
Avatar
Mihamina (R12y) Rakotomandimby
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.

3 réponses

Avatar
Olivier Miakinen

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

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

Avatar
Mihamina Rakotomandimby (R12y)
Olivier Miakinen wrote:
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.

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

exceptions dans le manuel, c'est « PHP 5 » :
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.


Avatar
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
}

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.


Je ne dis pas le contraire. Voir plus haut.

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


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.


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.