Обработка ошибок
В этом разделе описывается, как обрабатываются ошибки. Существует два типа ошибок:
-
Исключения времени выполнения SCA сигнализируют о проблемах при управлении выполнением компонентов и при взаимодействии с удаленными сервисами. они могут произойти из-за проблем с сетью или конфигурацией.
-
Бизнес-исключения - это те, которые определены программистом. Они расширяют класс исключений PHP и бросаются и ловятся сознательно как часть бизнес-логики.
Обработка исключений времени выполнения
Существует два типа исключений времени выполнения SCA:
-
SCA_RuntimeException сигнализирует о проблеме, обнаруженной или, возможно, возникающей во время исполнения SCA. Оно может быть вызвано различными причинами, многие из которых могут возникать независимо от того, выполняется ли подключение к локальному или удаленному сервису: ошибка в одном из комментариев в компоненте, отсутствующий файл WSDL или php и т.д.. В случае веб-сервисов исключение SCA_RuntimeException также может быть брошено, если от удаленного сервиса получен SoapFault, а код ошибки в SoapFault указывает на то, что повторная попытка вряд ли будет успешной.
-
SCA_ServiceUnavailableException - это подкласс SCA_RuntimeException и сигнализирует о проблеме при подключении или использовании удаленного сервиса, но при этом если повторить попытку, то все может получиться. В случае веб-сервиса это исключение бросается, если SoapFault получен с кодом ошибки, который указывает, что повтор может быть успешным.
Обработка бизнес-исключений
Бизнес-исключения могут быть определены и брошены компонентом обычным способом, независимо от того, был ли компонент вызван локально или удаленно. SCA не ловит бизнес-исключения, которые были брошены компонентом, вызваным локально, поэтому они будут возвращены вызывающему компоненту обычным способом. С другой стороны, если компонент был вызван через веб-сервис, SCA на стороне сервиса ловит бизнес-исключения и гарантирует, что они будут переданы обратно вызывающему компоненту и брошены повторно. Предполагая, что вызывающий компонент имеет определение исключения (то есть может включать файл, содержащий класс PHP, определяющий исключение), повторное исключение будет содержать те же детали, что и оригинал, так что функции getLine() и getFile(), будут содержать место, где исключение было брошено в бизнес-логике. Исключение будет передано в поле описания ошибки SOAP-запроса с кодом ошибки 'Client'.