Я не пытался сделать это раньше, поэтому заранее прошу прощения, если это не сработает (по крайней мере, это может заставить вас задуматься), но я бы попытался это сделать:
Поскольку ваше пространство имен будет частью общей более широкой структуры, я хотел бы, чтобы все классы в структуре расширяли базовый класс (для этого давайте назовем его BaseClass). Внутри этого класса я бы создал метод с именем errorHandler (). Внутри этой функции вы будете делать все, что захотите, для обработки исключений (возможно, даже вызывать исключение самостоятельно).
Теперь, когда у вас есть эта функциональность, мы должны выяснить, как вызвать эту функцию. Поскольку все объекты в вашем пространстве имен расширяют BaseClass, все они имеют доступ к этому методу errorHandler (). Теперь внутри вашего кода вы можете использовать обычные блоки try / catch для захвата возникающих исключений, и вместо использования стандартной модели исключений вы бы вместо этого вызвали $ this-> errorHander () (Теперь, когда я думаю об этом, вы можете захотеть поместить некоторые параметры здесь - возможно, исключение, которое вы получаете из оператора catch). Это должно дать вам то, что вам нужно для частей кода, которые, как вы ожидаете, могут возникнуть проблемы.
Следующая часть, которую мы должны выяснить, - это обработка исключений, которые вы не ожидаете, и то, как вы планируете маршрутизировать их через этот обработчик ошибок. Это немного сложнее, потому что это решение где-то опирается на блок try / catch. Поскольку это фреймворк, я собираюсь предположить, что все выполняется через index.php или какой-либо другой файл начальной загрузки (что-то вроде Zend Framework или тому подобное). Если это так, то я бы поставил ваш try / catch везде, где начинается фреймворк. Основываясь на исключении, которое вы получаете в блоке catch, вы можете решить, хотите ли вы запустить его через метод errorHandler (). Мне нужно, чтобы администрация этой части почему-то чувствовала себя немного грязной, и что должен быть лучший способ сделать это (возможно, как только вы продвинетесь дальше, появится лучшее решение).
Надеюсь, это поможет вам продвинуться дальше в вашем процессе. Если у кого-то есть идея, как заставить последнюю часть не чувствовать себя такой грязной, это было бы здорово.