Switch выходы из C# блока

Andron

Client
Регистрация
08.04.2015
Сообщения
222
Благодарностей
10
Баллы
18
В текущий момент наличие только двух выходов (good - bad) из C# блока является неудобным.
Даже допустим просто отловить несколько разных ошибок на одном этапе, необходимо создать доп переменную, в которую ложить текст ошибки и потом создавать свич который будет выводить к нужному блоку в зависимости от значения.
А если в блоке делать подразумевать два выхода по каким-то данным. Делая второй выход через ручной throw new Exception(); то любая ошибка в блоке тоже будет выходить через этот путь.
В результате куча блоков проверок на входе, на выходе и всё равно все ошибки не получается отловить.

Пусть у C# блока будет много выходов как у switch блока, в зависимости от возвращаемого значения.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 458
Благодарностей
8 682
Баллы
113
У C# блока не получится сделать много выходов.
Для разветвления более 2 направлений все же нужно использовать экшен Switch.
Вполне удобное решение. В C# генерите коды и проверяете их в Switch, разветвляете выполнение.
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 369
Благодарностей
3 294
Баллы
113
  • Спасибо
Реакции: Sergodjan

Andron

Client
Регистрация
08.04.2015
Сообщения
222
Благодарностей
10
Баллы
18
помещайте код в try catch и выполняйте в catch нужный метод из общего кода.
Например у меня в одном C# блоке сделана логика перехода на сайт, клика по нескольким элементам,
Выглядит так:
if(сайт загрузился)
{
что-то сделать.
А тут можно было бы сделать еще пару ответвлений по результатам работы.
}
else throw new Exception();
И тогда у меня блок выходит по плохой линии и может допустим попытаться переполучить прокси.
Но по огромному количеству причин в месте "что-то сделать" этот скрипт может закончиться ошибкой ( не найден, элемент, не удалось обратиться к файлу, не открылось окно и т.д.) и тогда он всёравно пойдёт по плохому пути.
В этом случае catch не поможет, так как если скрипт не находит htmlelement то я ему в процессе выполнения уже ничем не помогу, ибо не вижу данных по этому елементу.
А потребность заключается в необходимости точно знать: вышел шаблон по плохому пути потому, что я ему так задал или потому, что это ошибка. При этом не создавая доп. переменных и проверочных блоков после каждого c# блока.
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 369
Благодарностей
3 294
Баллы
113
В этом случае catch не поможет, так как если скрипт не находит htmlelement то я ему в процессе выполнения уже ничем не помогу, ибо не вижу данных по этому елементу.
Можно сделать несколько catch, но тогда и придётся создать свои исключения.
Либо в общем catch'е делайте проверку на ошибки по строке или чему-то другому.
 

Andron

Client
Регистрация
08.04.2015
Сообщения
222
Благодарностей
10
Баллы
18
Можно сделать несколько catch, но тогда и придётся создать свои исключения.
Либо в общем catch'е делайте проверку на ошибки по строке или чему-то другому.
Я понимаю как можно обрабатывать такого рода исключения, но для этого необходимо будет нагородить кучу лишнего кода.
Искал способ сделать это проще.
В любом случае спасибо за ответ.
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 369
Благодарностей
3 294
Баллы
113

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 369
Благодарностей
3 294
Баллы
113
Передал для 7-ки. Уточню у разработчиков, на сколько это реально в будущем.
 
Последнее редактирование:
  • Спасибо
Реакции: Meteorburn

Meteorburn

Client
Регистрация
23.05.2016
Сообщения
1 448
Благодарностей
564
Баллы
113

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 369
Благодарностей
3 294
Баллы
113

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