Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Взаимодействие с RAS при выполнении методов объектов irac может завершаться с ошибкой, но это никак не отследить #62

Open
1cgh opened this issue Jul 1, 2022 · 4 comments

Comments

@1cgh
Copy link

1cgh commented Jul 1, 2022

При выполнении, например, ИнформационнаяБаза.ОбновитьДанные(1);
происходит обращение к RAS, которое завершается ошибкой, в консоль при этом выводится
ПРЕДУПРЕЖДЕНИЕ - Получен ненулевой код возврата -1:
При этом сам метод выполняется и нет возможности понять, что фактически обновления данных не произошло, т.е. ошибка взаимодействия с RAS не прокидывается дальше.

@1cgh 1cgh changed the title Команды могут завершаться с ошибкой, но это никак не отследить Взаимодействие с RAS при выполнении методов объектов irac может завершаться с ошибкой, но это никак не отследить Jul 1, 2022
@1cgh
Copy link
Author

1cgh commented Jul 1, 2022

Туда же: при операциях с ИБ, на которую нет права администрирования, получаем предупреждение в консоль:
ПРЕДУПРЕЖДЕНИЕ - Получен ненулевой код возврата -1: Недостаточно прав пользователя на информационную базу ИмяБазы

@arkuznetsov
Copy link
Owner

@1cgh А что бы хотелось видеть? Если в первом случае еще имеет смысл выбросить исключение, то во втором (без прав администрирования) так сделано специально, т.к. если нет прав, то просто возвращается сокращенная информация о базе.

@1cgh
Copy link
Author

1cgh commented Jul 2, 2022

В личке уже обсудили) Дополню тут.
Во-первых, хотелось бы явно иметь информацию о том, что метод выполнен. Сейчас получается, что метод вызван, не упал, а по факту не выполнен. Не надо так)
В части ошибок хотелось бы получать какие именно ошибки возникли при выполнении метода.
Т.е. то, что сейчас вызывается как процедуры поменять на функции, возвращать структуру со свойством-флагом успешного выполнения и данные об ошибках, если они возникли. Ну или возвращать данные об ошибках или Неопределено, если всё ок.
Это обеспечит обратную совместимость. По-старому функция будет вызываться как процедура. По-новому можно будет обработать возвращаемый результат и что-то предпринять (залогировать, обернуть в несколько попыток выполнения метода и т.п.)

@arkuznetsov
Copy link
Owner

  1. Сейчас все методы, которые дергают RAC выбрасывают исключение (1.3.0). Исключение - получение полной информации о ИБ и сеансах. Т.е. сейчас все объекты кидают исключения, а соединения и ИБ кидают исключение, только если совсем не удалось получить инфу, а если проблема только в авторизации (получении полных данных), то нужно еще проверить "ПолноеОписание() = Истина". Что входит в полные, данные, а что в расширенные в доке к RAC написано.
  2. С соединениями и сеансами - есть еще 1 нюанс, там не кидается исключение, т.к. соединения/сеанса уже может не быть с указанным ИД, вот тут можно еще подумать.
  3. Мне что-то не очень нравится возвращать структуру, т.к. если исключение ты просто можешь перехватить, то результат тебе придется всегда на всех уровнях проверять и как-то обрабатывать.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants