La phase de vote du RFC PREG_THROW_ON_ERROR a débuté, annoncée par son auteur Osama Aldemeery sur la liste internals de PHP après une période de discussion sans points ouverts. Le vote se termine le 18/09/2026 à 17h00 UTC. Le RFC est disponible sur wiki.php.net/rfc/preg_throw_on_error et l'implémentation dans la pull request 22797 de php-src.
La proposition ajoute un drapeau optionnel PREG_THROW_ON_ERROR. Passé à n'importe quelle fonction de correspondance preg_*, il fait que chaque erreur PCRE enregistrée par l'appel est également levée sous forme de \PregException. Le code et le message de l'exception correspondent exactement à preg_last_error() et preg_last_error_msg(). Sans le drapeau, le comportement reste identique à aujourd'hui.
Tim Düsterhus a voté contre tout en étant d'accord avec le concept général. Il s'oppose au maintien d'un Warning pour les erreurs de compilation : la fonctionnalité étant nouvelle et optionnelle, il n'y a selon lui aucune contrainte de rétrocompatibilité, et la garantie que $e->getMessage() soit égal à preg_last_error_msg() affaiblit la fonctionnalité. L'exception devrait contenir toutes les informations nécessaires.
Il conteste aussi le fait que les exceptions levées dans les callbacks utilisateur ne soient pas encapsulées. À ses yeux, elles devraient devenir une \PregException avec l'exception d'origine en $previous. Sinon, il faut toujours un catch(Exception) autour de chaque appel preg_, ce qui annule l'intérêt d'une classe d'exception dédiée. Il souligne enfin que cela contredit la politique PHP sur les throwables, qui impose aux extensions d'encapsuler les exceptions externes et de renseigner $previous.




Commentaires
Pas encore de commentaire — écris le premier.
Lance la discussion
Pas de compte ni de mot de passe — saisis simplement ton adresse e-mail et nous t’envoyons un lien de connexion à usage unique. Première visite ? Tout se met en place automatiquement.
Ton évaluation sera appliquée automatiquement après ta connexion.
Vérifie ta boîte mail
Nous avons envoyé un lien de connexion à …. Ouvre-le sur cet appareil — cet onglet te connectera automatiquement.
Rien reçu ? Vérifiez le dossier spam — et marquez le message « Non spam » pour qu'il arrive directement la prochaine fois.