Плагин не возвращает значение в случае ошибки

Riddick

Client
Регистрация
09.12.2015
Сообщения
21
Благодарностей
0
Баллы
1
Суть проблемы в том, что когда делаешь проект, при вызове любого исключения - всегда идет по красной ветке и попадает в BadEnd, где мы можем обработать результат. Но вот когда сохраняешь проект, как плагин и вставляешь его в другой шаблон - то отладка по красной ветке не работает! Плагин не возвращает значения. Очень неудобно, когда нужно, что бы плагин всегда выполнялся по зеленой ветке, а при ошибке попадал в BadEnd и возвращал данные в переменные для последующей обработки уже в шаблоне.
 

Вложения

  • 28,3 КБ Просмотры: 5

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 546
Баллы
113
Это не баг, так и задумывалось изначально. Работает по таком же принципу, как и в других экшенах. Если стандартное действие завершается ошибкой, то в переменную тоже ничего не возвращается. Поэтому перенесу в раздел предложений.

Тем не менее, я понимаю для чего Вам это нужно.
На текущий момент Вы можете сделать потенциально ошибочное место в плагине "Необязательным". Это позволит ему всегда завершаться по зеленой ветке.

 

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
743
Баллы
113
Я себе плагин, отчет об ошибках собрал, думал вставлять буду, в другие шаблоны, планировал, плагин с полным отчетом до трех вкладок, теперь приходится из одно все копировать
1595312808262.png
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 546
Баллы
113
Я себе плагин, отчет об ошибках собрал, думал вставлять буду, в другие шаблоны, планировал, плагин с полным отчетом до трех вкладок
Не совсем понял, Вы не пользуетесь плагином потому что он работает с ошибками, которые не возвращаются или из-за того, что какие-то действия в плагине работают не так, как Вам нужно?
 

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
743
Баллы
113
Не совсем понял, Вы не пользуетесь плагином потому что он работает с ошибками, которые не возвращаются или из-за того, что какие-то действия в плагине работают не так, как Вам нужно?
Нет. Я на оборот, собрал шаблон, плагин, с BadEnd и хотел его использовать как плагин, шаблон в шаблоне.
Да вот пример и хотел сохранить как плагин)
 

Вложения

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
743
Баллы
113
Но теперь понимаю, почему так не получится, этот плагин он все равно шаблон отдельный, так не получится.
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 546
Баллы
113
Но теперь понимаю, почему так не получится, этот плагин он все равно шаблон отдельный, так не получится.
Все получится. Проблема заключается в том, что Вы неправильно используете плагин в рамках этой задачи.
Bad End в плагине обрабатывает ошибки внутри плагина. Чтобы обработать ошибки шаблона с помощью плагина, необходимо его связать с Bad End'ом проекта. Надеюсь понятно объяснил :-)

Работа шаблона, как и плагина всегда начинается со Start'a, поэтому необходимо сделать так:


А в нужном проекте добавить его после Bad End'a:



Учтите, что в плагине обязательно должен быть интерфейс, созданный через BotUI.
 
  • Спасибо
Реакции: Roman48

Riddick

Client
Регистрация
09.12.2015
Сообщения
21
Благодарностей
0
Баллы
1
Это не баг, так и задумывалось изначально. Работает по таком же принципу, как и в других экшенах. Если стандартное действие завершается ошибкой, то в переменную тоже ничего не возвращается. Поэтому перенесу в раздел предложений.

Тем не менее, я понимаю для чего Вам это нужно.
На текущий момент Вы можете сделать потенциально ошибочное место в плагине "Необязательным". Это позволит ему всегда завершаться по зеленой ветке.

К сожалению данный трюк не всегда удобен. Если идет блок кубиков и посредине например обработчик ошибок, то при исключении процесс пойдет дальше, что ломает логику выполнения. А сама задумка была следующей:

C#:
if (<условие истинно и все плохо>)
{
    project.Variables["Статус"].Value = "Сюда пишем статус";
    project.Variables["Инфо"].Value = "Сюда пишем саму ошибку";
    // Вылетаем по красной ветке
    throw new Exception();
}
На красной ветке можно что то еще обработать и отправить. В итоге плагин выполнится без ошибки и вернет ее значение. И в самом шаблоне уже обработать и красиво вывести. Когда делал плагин, думал что логика такая же как и у шаблона, но увы, нужно было проверить это заранее. Было бы замечательно, если Вы в следующих реализах добавите чекбокс для такого режима.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)