В PHP сделают нормальную обработку ошибок?

05.11.2013, автор: indeyets, метки: php

Никита Попов пару недель назад опубликовал RFC о допустимости бросания исключений из «ядра» PHP и замене большого количества фатальных ошибок на исключения.

О чём идёт речь: в настоящий момент действует правило запрещающее кидать исключения из ядра и стандартных расширений PHP. Исключение делается для «объектного кода» в котором без исключений обойтись не получается. Во многом это наследие старых времён и от этого правила многие устали. На моей памяти, с этим правилом уже пытались бороться пару раз, но подходили к проблеме не системно и либо не предлагали патч, а ограничивались общими рассуждениями о добре и зле либо же предлагали ломать всё на корню, на что, очевидно, проект PHP пойти не может.

Никита предложил заменить в следующем minor-релизе PHP (5.6) на исключения только те ошибки которые сейчас обработать не возможно в принципе и единственный способ среагировать на них — это записать что-то в лог во время отработки shutdown handler.

Патч позволяет обработать ситуации при которых код пытается вызвать несуществующий метод, использовать класс вместо интерфейса и т.п. В первую очередь от такого нововведения должны выиграть разработчики систем активно использующих плагины (drupal, wordpress, …). Неправильный код стороннего плагина больше не будет приводить к аварийному завершению работы продукта. Теперь такую ситуацию можно будет обработать стандартным блоком try … catch.

На момент написания этой записи голосование по включению патча в PHP 5.6 ещё не проходило, но на мой взгляд шансы очень велики. Обсуждение было очень конструктивным и позитивным.


Комментарии

blog comments powered by Disqus