Manejo de errores

Esta sección describe cómo se manejan los errores. Existen dos tipos de errores:

  • Las excepciones en tiempo de ejecución de SCA son aquellas que señalan problemas en el manejo de la ejecución de componentes, y en la interacción con servicios remotos. Podrían ocurrir debido a problemas de red o de configuración.

  • Las excpeciones de negocio son aquellas definidas por el programador. Amplían la clase Exception de PHP, y son lanzadas y capturadas deliberadamente como parte de la lógica de negocio.

Manejo de excepciones en tiempo de ejecución

Hay dos tipos de excepciones en tiempo de ejecución de SCA:

  • SCA_RuntimeException - señala un problema encontrado por o quizás ocurrido dentro del tiempo de ejecución de SCA. Puede ser lanzada por varias razones, muchas de las cuales pueden ocurrir sin tener en cuenta si si se ha realizado una conexión a un servicio local o remoto: un error en una de las anotaciones de un componente, un fichero WSDL o php faltante, etc. En el caso de servicios web, una SCA_RuntimeException también puede ser lanzada si se recibe un SoapFault desde un servicio web remoto y el código de error del SoapFault indica que sea improbable que tenga éxito un reintento.

  • SCA_ServiceUnavailableException - esta es una subclase de SCA_RuntimeException y señala un problema al conectarse a, o usar un servicio remoto, aunque podría tener éxito si se reintenta. En el caso de servicios web, esta excepción es lanzada si se recibe un SoapFault con un código de error que indique que un reintento podría tener éxito.

Manejo de excepciones de negocio

Las excepciones de negocio pueden ser definidas y lanzadas por un componente de la manera usual, sin tener en cuenta si el componente ha sido invocado local o remotamente. El tiempo de ejecución de SCA no captura las excepciones de negocio que han sido lanzadas por un componente invocado localmente, por lo que serán devueltas al llamador de la manera usuarl. Por otro lado, si un componente ha sido invocado mediante un servicio web, el tiempo de ejecución de SCA, al final de proporcionar el servicio, captura las excepciones de negocio, y se asegurará de que sean pasadas otra vez al final de la llamada y sena relanzadas. Asumiento que al final de la llamada hay una definición de la excepción (esto es, es capaz de incluir un fichero que contenga la clase de PHP que contenga la excepción) la excepción relanzada contendrá los mismos detalles que la original, por lo que los métodos getLine() y getFile(), por ejemplo, contendrán la ubicación de donde fue lanzada la excepción dentro de la lógica de negocio. La excepción será pasada en el campo 'detail' de un error soap con el código de error "Client".