Sonntag, 30. November 2008

Errors in Exceptions umwandeln (2)

Da war ich wohl in meinem letzten Artikel "Errors in Exceptions umwandeln" etwas voreilig. Durch einen Workaround, den ich ausversehen noch bei mir eingebaut hatte, wirkte es auf mich so, als wäre der Backtrace der ErrorException richtig. Dem ist aber leider nicht so. Nach wie vor beinhaltet der erste Eintrag die Zeile, in der die ErrorException geworfen wird.

Und wie ich in den Kommentaren im PHP-Manual gelesen habe (und auch selber nachvollziehen konnte), gibt es auch noch einen PHP-5.2-Bug in der ErrorException, welche die Argumente im Backtrace durcheinanderwürfelt. Und dieser kann leider erst mit PHP 5.3 behoben werden. Na, klasse.

Bevor ihr jetzt den Workaround aus den Manual-Comments einbaut, bei dem ihr auch noch ständig die PHP-Version überprüfen müsst, empfehle ich, die ExceptionError-Klasse selbst durch Erweiterung der Exception-Klasse zu bauen. Sollte recht schnell gehen, beinhaltet den Fehler nicht, und man könnte automatisch den ersten Eintrag aus dem Backtrace herauswerfen, um sich um keinen Sonderfall im Exception-Handler kümmern zu müssen.


PHP Bugs: #45895: Exception in set_error_handler() messes up backtrace args

Keine Kommentare:

Kommentar veröffentlichen