no he intentado hacer esto antes, así que me disculpo de antemano si esto no funciona (al menos puede hacerle pensar), pero así es como me gustaría tratar de lograr esto:
Desde su espacio de nombres va a ser parte de un marco global más amplio, quisiera que todas las clases en el marco extiendan una clase base (para esto, llamemos BaseClass). Dentro de esa clase crearía un método llamado errorHandler(). Dentro de esta función, usted haría lo que quiera por el manejo de su excepción (tal vez incluso lanzando una excepción).
Ahora que tiene esta funcionalidad, tenemos que averiguar cómo obtener esta función. Como todos los objetos de su espacio de nombres extienden BaseClass, todos tienen acceso a este método errorHandler(). Ahora dentro de su código puede usar los bloques try/catch normales para capturar las excepciones que suceden y, en lugar de usar el modelo de excepción estándar, en su lugar debería llamar $ this-> errorHander() (Ahora que lo pienso, puede que quiera poner algunos parámetros aquí, posiblemente la excepción que se obtiene de la declaración catch). Esto debería darle lo que necesita para las partes del código que espera que ocurran los problemas.
La siguiente parte que debemos averiguar es manejar las excepciones que no espera y cómo planea enrutarlas a través de este manejador de errores. Este es un poco más complicado porque esta solución se basa en un bloque try/catch en alguna parte. Dado que este es un marco, voy a suponer que todo se ejecuta a través de index.php o algún otro archivo de arranque (algo así como Zend Framework o similar). Si este es el caso, pondría su try/catch alrededor donde comience la eliminación del framework. Basado en la excepción que obtienes en el bloque catch, puedes decidir si quieres ejecutarlo a través del método errorHandler(). Tengo que administrar esta parte de alguna manera se siente un poco sucio y que debería haber una mejor manera de hacerlo (tal vez una vez que llegue más lejos se presentará una mejor solución).
Esperamos que esto lo ayude a avanzar en su proceso. Si alguien tiene una idea de cómo conseguir que la última parte no se sienta tan sucia, sería genial.
No lo creo: no hay información sobre el espacio de nombres en los datos de retorno de 'debug_backtrace()' (basado en el cual puede decirle a su manejador de errores cómo reaccionar). Interesado para ver si surge algo. –