Общение


Обработка ошибок


При вызове удаленных серверных методов могут происходить разного рода ошибки: синтаксические ошибки, ошибки времени исполнения, ошибки при вызове методов. RS имеет механизмы оповещения о происходящих ошибках.

Реакция на ошибки немного различается при синхронном и асинхронном вызове. Если при синхронном вызове произошла ошибка, механизм обработки ошибок выбрасывает сообщение об ошибке в окно браузера. Текстом сообщения является message свойство call объекта. Если ошибка происходит при асинхронном вызове, то вы можете ее перехватить, определяя error callback функцию.

При асинхронном вызове передаете ссылку на error callback функцию в качестве параметра. Т. к. передается указатель на функцию, то при таком вызове можно использовать только JavaScript. Примеры с использованием объекта ссылающегося на серверную страницу и без:

callObject = ASPObject.methodName(p1, p2[,...], callbackFunction, errorCallbackFunction, context)

callobject = RSExecute(url, methodName, p1, p2[,...], callbackFunction, errorCallbackFunction, context)

При синхронном и асинхронном вызове вы можете получать информацию о происходящих ошибках через свойства call объекта. Если вы определяете error callback функцию, то call объект передается в качестве параметра как и в случае callback функции. Полезные свойства call объекта при обработке ошибочных ситуаций:

  • status содержит -1 если при удаленном вызове произошла ошибка.
  • data содержит необработанное сообщение переданное сервером в XML формате. Это лучший источник информации при отладке, т. к. он содержит полную информацию об ошибке.
  • message содержит сообщение об ошибке созданное прокси процессом. Сообщение об ошибке в message не обязательно совпадает с содержанием свойства data. Например, если ASP страница содержит ошибку, детальная информация об ошибке содержится в data, а message только содержит сообщение о том, что при выполнение произошла ошибка.

    Следующий пример демонстрирует работу error callback функции в клиентском скрипте.

    <script language = "JavaScript" for = "btnSquare" event = "onclick"> rsMath = RSGetASPObject("rsadd.asp"); number1 = txt1.value; context = "squaring"; co = rsMath.square(number1,showResults,showErrors,context);

    function showErrors(co){ msg = "The raw data returned by the remote method call is " msg = msg + co.data alert(msg); msg = "The following error occurred during the " msg = msg + co.context msg = msg + " remote scripting call:\n" msg = msg + co.message; alert(msg); } </script>



    Содержание раздела