Я использую Delphi 10.1 Berlin Update 2 Enterprise и клиент-серверную структуру REST DataSnap.
Если я запускаю приложение без отладки и вызываю метод, который пользователь не имеет права вызывать, код выполняется без каких-либо исключений, и метод возвращает нулевой ответ.
При интерактивной отладке вызова клиентского метода сервера DataSnap, я получаю два всплывающих исключения, касающихся «неавторизованного».
Первый пузырится и заменяется вторым.
Второе исключение «съедается», и сеанс / соединение просто закрывается, а затем метод возвращает пустой результат (например, ноль, если тип возвращаемого значения является целым числом, и пустую строку для типа возвращаемого значения строки).
Это происходит в следующем разделе кода ближе к концу метода ExecuteRequest в модуле Datasnap.DSClientRest:
except
on E: TDSRestProtocolException do
LSessionExpired;
end;
Почему эти исключения (например, TDSRestProtocolException) не доходят до моего кода?
Я думаю, что это новость для обновления 2, и я помню, как эти исключения всплывали в моем коде до обновления 2.
Attached - это скелетный пример (стандартный пример, созданный мастерами Delphi), который демонстрирует проблему - нажмите кнопку, и вы получите «» вместо «4321», потому что пользователь не авторизован, но нет исключения времени выполнения.
Я новичок в DataSnap, так что несите меня :-)
Заранее спасибо за полезные ответы =)