## Gestion d'erreurs

Cette section décrit comment sont gérées les erreurs. Il y a deux types d'erreur :

- Les exceptions de l'exécutable SCA sont celles qui signalent des problèmes dans la gestion de l'exécution des composants, et dans l'interaction avec les services. Cela peut survenir à cause de problèmes de configuration réseau.

- Les exceptions métier sont celles qui sont définies par le programmeur. Elles étendent la classe PHP Exception, et sont émises puis interceptées explicitement comme partie intégrante de la logique métier.

## Gestion des erreurs d'exécution

Il y a deux types d'erreur SCA :

- SCA_RuntimeException : elle signale un problème dans ou survenant dans l'exécutable SCA. Elle peut être émise pour diverses raisons, et certaines d'entre elles peuvent être indépendantes de la connexion à un service local ou distant : une erreur dans l'une des annotations un fichier WSDL ou PHP manquant, etc. Dans le cas des services Web, une exception SCA_RuntimeException peut aussi être émise si une erreur SoapFault a été émise par un service Web et que le code d'erreur SoapFault indique qu'une nouvelle tentative a peu de chances d'aboutir.

- SCA_ServiceUnavailableException : cette classe est une sous-classe de SCA_RuntimeException, et signale un problème lors de la connexion ou de l'utilisation d'un service distant, mais une erreur qui peut être dépassée si une nouvelle tentative est faite. Dans le cas des services Web, cette exception est émise si une erreur SoapFault est reçue avec un code qui indique qu'une nouvelle tentative pourrait être couronnée de succès.

## Gestion des exceptions métier

Les exceptions métier peuvent être définies et émise par un composant de manière classique, indépendamment du fait que le service a été appelé localement ou à distance. L'exécutable SCA n'intercepte pas les exceptions locales, ce qui fait qu'elles seront acheminées au composant appelant de manière classique. Si un composant a été appelé comme service Web, l'exécutable SCA va les intercepter, et s'assurera qu'elles sont transmises au composant appelant, puis émise à nouveau. En supposant que le script appelant a une définition de l'exception métier (c'est à dire qu'il est capable d'inclure un fichier contenant la définition PHP de l'exception), la nouvelle exception sera émise avec les mêmes détails que l'originale, de qui fait que les informations de getLine() et getFile() contiendront les indications d'origine de l'erreur dans les fichiers du service appelé. Cette exception sera passée via le champ détail de la classe SoapFault.