Die Abstimmungsphase zum RFC PREG_THROW_ON_ERROR hat begonnen. Autor Osama Aldemeery eröffnete sie auf der PHP-Internals-Liste, nachdem die Diskussionsphase ohne offene Punkte verlaufen war. Die Abstimmung endet am 18.09.2026 um 17:00 Uhr UTC. Der RFC steht unter wiki.php.net/rfc/preg_throw_on_error, die Implementierung im php-src-Pull-Request 22797.

Der Vorschlag führt ein optionales Flag PREG_THROW_ON_ERROR ein. Wird es an eine beliebige preg_*-Matching-Funktion übergeben, wird jeder PCRE-Fehler, den der Aufruf verzeichnet, zusätzlich als \PregException geworfen. Code und Meldung der Exception entsprechen exakt preg_last_error() und preg_last_error_msg(). Aufrufe ohne das Flag verhalten sich unverändert.

Tim Düsterhus stimmte gegen den RFC, obwohl er das Grundkonzept unterstützt. Er lehnt es ab, bei Kompilierfehlern weiterhin eine Warning auszugeben: Da das Feature neu und opt-in ist, gebe es keine Rückwärtskompatibilitäts-Argumente, und die Garantie, dass $e->getMessage() gleich preg_last_error_msg() ist, verschlechtere das Feature. Die Exception müsse alle nötigen Informationen enthalten.

Außerdem kritisiert er, dass in User-Callbacks geworfene Exceptions nicht verpackt werden. Seiner Ansicht nach sollte daraus eine \PregException mit der ursprünglichen Exception als $previous werden. Andernfalls brauche man weiterhin ein catch(Exception) um jeden preg_-Aufruf, was den Nutzen einer eigenen Exception-Klasse weitgehend zunichte mache. Zudem verstoße dies gegen die PHP-Throwable-Policy, die verlangt, dass Extensions Exceptions aus externer Funktionalität verpacken und $previous setzen.