powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Исключения vs коды возвратов
25 сообщений из 406, страница 3 из 17
Исключения vs коды возвратов
    #39670847
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAВсё это фигня...
Следует возвращать OperationResult да и вообще писать в функциональном стиле

Типа HttpResponseMessage? Кстати простое отображение OperationResult на HttpResponseMessage с нужным кодом, вместо if-ов :)
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670849
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, вчера, 21:20 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21547461][21547461]
>...Если в компанию в разработку на C# придёт хоть трижды авторитетный человек со своими кодами вместо исключений, то пойдёт сразу на рынок труда со всеми своими монатками и дебильным мнением.

Не могу с Вами согласиться. Многое зависит от задачи. Вот два примера:
1. Вызов удаленного метода (WCF) с возвратом информационного пакета. Инфопакет содержит код не штатной ситуации.
2. Вызов метода в рабочем потоке.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670851
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев1. Вызов удаленного метода (WCF) с возвратом информационного пакета. Инфопакет содержит код не штатной ситуации.
Так возвращается пакет, а не код.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670852
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВМоисеев1. Вызов удаленного метода (WCF) с возвратом информационного пакета. Инфопакет содержит код не штатной ситуации.
Так возвращается пакет, а не код.То есть не тупо -1 и фиг знает, что там произошло
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670855
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>hVostt, вчера, 21:20 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21547461][21547461]
>...Если в компанию в разработку на C# придёт хоть трижды авторитетный человек со своими кодами вместо исключений, то пойдёт сразу на рынок труда со всеми своими монатками и дебильным мнением.

Не могу с Вами согласиться. Многое зависит от задачи. Вот два примера:
1. Вызов удаленного метода (WCF) с возвратом информационного пакета. Инфопакет содержит код не штатной ситуации.
2. Вызов метода в рабочем потоке.
hVostt 'у надо верить))).
WCF прекрасно сериализует исключения на клиента.
Ты не в курсе.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670860
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>skyANA, сегодня, 18:38 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21550572][21550572]
>То есть не тупо -1 и фиг знает, что там произошло
Здесь подробнее.
Возвращается пакет, содержащий 2-х байтный код выполнения метода.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670861
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Petro123, сегодня, 18:51 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21550618] [21550618]
>hVostt'у надо верить))).
Всё несколько сложнее, чем Вы представляете.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670862
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>Petro123, сегодня, 18:51 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21550618] [21550618]
>hVostt'у надо верить))).
Всё несколько сложнее, чем Вы представляете.
По топику видно, что идолов в IT нету. Всё на собственной шкуре, на собственной шкуре).
Щас он придет и ему расскажешь почему ему не надо, а тебе надо верить))
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670864
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>skyANA, сегодня, 18:38 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21550572][21550572]
>То есть не тупо -1 и фиг знает, что там произошло
Здесь подробнее.
Возвращается пакет, содержащий 2-х байтный код выполнения метода.
Не интересно, потому как не читабельно.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670867
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,

может сразу dump возвращать?
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670868
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВМоисеев>skyANA, сегодня, 18:38 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21550572][21550572]
>То есть не тупо -1 и фиг знает, что там произошло
Здесь подробнее.
Возвращается пакет, содержащий 2-х байтный код выполнения метода.
Не интересно, потому как не читабельно.
Нажал Ctrl + F, ввёл WCF, получил 0.
Классная иллюстрация вызова удалённого метода WCF, просто супер
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670870
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
теперь я понимаю, от куда порождаются ошибки типа окна с сообщением о том, что произошла ошибка неизвестная ошибка и программа должна быть закрыта =) по типу "Что то случилось".
Частенько на такое натыкаюсь в говнокодах. Что, где и почему нужно определять с помощью хрустального шара.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670873
Дядя Коля
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAДядя Коляпропущено...

а какие аргументы?
Чистые функции. Легко тестировать. "Поезда" вызовов
Исключения
1. легко писать
2. многие функции все равно используют исключения, как например работа с базой данных
3. поезда вызовов - не знаю что такое но похоже на стэк трейс думаю.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670879
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesВМоисеев,

может сразу dump возвращать?
)))) LOL
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670881
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>skyANA, сегодня, 19:31 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21550676][21550676]
>Нажал Ctrl + F... Классная иллюстрация …

Вы о чём? В статье так:

Структура байтовой последовательности ответа в случае регистрации клиента
Ошибка - (двухбайтовый код ошибки)
Штатно - (0x00+0x00+IV)+[симметрично зашифрованное Info]
Структура Info ответа для регистрации:
[cmd клиента]+[guid аутентифицированного клиента]+[размер страницы]+[имя клиента]

Структура байтовой последовательности для общего случая информационного запроса/ответа:
Запрос:
(КС+IV+индекс группы команд)+[Info]
Структура Info запроса:
[idxПакет+индекс команды в группе+параметры команды]
Структура ответа:
Ошибка - (двухбайтовый код ошибки)
Штатно - (0x00+0x00+IV)+[Info]
В общем случае Info ответа содержит результирующий набор данных в виде отсортированного массива строк...
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670882
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Roman Mejtes, сегодня, 19:35 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21550681][21550681]
>Частенько на такое натыкаюсь в говнокодах.

Вот и пятачок прорезался
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670888
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дядя КоляskyANAпропущено...

Чистые функции. Легко тестировать. "Поезда" вызовов
Исключения
1. легко писать
2. многие функции все равно используют исключения, как например работа с базой данных
3. поезда вызовов - не знаю что такое но похоже на стэк трейс думаю.
Легко писать исключения? Интересно...
Тогда о чём топик? Если для Вас просто и понятно где нужно исключение и какое, и как оно будет обрабатываться
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670889
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>skyANA, сегодня, 19:31 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21550676][21550676]
>Нажал Ctrl + F... Классная иллюстрация …

Вы о чём? В статье так:

Структура байтовой последовательности ответа в случае регистрации клиента
Ошибка - (двухбайтовый код ошибки)
Штатно - (0x00+0x00+IV)+[симметрично зашифрованное Info]
Структура Info ответа для регистрации:
[cmd клиента]+[guid аутентифицированного клиента]+[размер страницы]+[имя клиента]

Структура байтовой последовательности для общего случая информационного запроса/ответа:
Запрос:
(КС+IV+индекс группы команд)+[Info]
Структура Info запроса:
[idxПакет+индекс команды в группе+параметры команды]
Структура ответа:
Ошибка - (двухбайтовый код ошибки)
Штатно - (0x00+0x00+IV)+[Info]
В общем случае Info ответа содержит результирующий набор данных в виде отсортированного массива строк...
И почему так? В чём плюсы? Кроме Вас с этим кто-то работает?
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670894
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>skyANA, сегодня, 20:37 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21550771][21550771]
>И почему так? В чём плюсы? Кроме Вас с этим кто-то работает?

Система не 3-х уровневая, а 5-ти.
Инфопакеты надо транспортировать между слоями, некоторым уровням не должно знать их структуру.
Никто. Проект умер.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671129
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевНе могу с Вами согласиться. Многое зависит от задачи. Вот два примера:
1. Вызов удаленного метода (WCF) с возвратом информационного пакета. Инфопакет содержит код не штатной ситуации.
2. Вызов метода в рабочем потоке.

1. Исключения это внутренний механизм. Несмотря на это они сериализуются и могут быть брошены внутри клиента если речь идёт об интеграции с внешним API.

Например, служба внешнего файлового хранилища, вместо System.IO используется некий REST API. Проблемы отсутствия файлов, отсутствия доступа, проблемы с сетью, с работой самой службы (она даже код не сможет вернуть, если сломалась) -- никуда не делись. Пример не подходит.

2. В чём проблема?
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671130
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAКстати простое отображение OperationResult на HttpResponseMessage с нужным кодом, вместо if-ов :)

Ну дык. А проблемы с сетью? Чтобы не разрываться между двух огней, правильно было бы в ответ на код ошибки таки выбросить исключения. Обёртка клиента, осуществляющая вызовы API не должна транслировать коды HTTP ошибок, если по уму.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671142
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, сегодня, 00:06 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21552946][21552946]

>1. Исключения это внутренний механизм…

Имеем цепочку: слой.1(клиент) <--> слой.2 <--> слой.3 <--> слой.4(сервер_приложений) <--> SQL_сервер.
Обмен между слоями идет инфопакетами, которые в слое могут накапливаться в очередях.
Ошибку SQL_сервера обрабатывает сервер_приложений, формирует инфопакет(первый байт которого не 0), который записывает в очередь слоя.3 и т.д.

>2. В чём проблема?
В эффективности и удобстве. Имеем:
1. Запрос на построение выборки:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
    . . .     
    //-- Получим информацию по объектам ВД
    lst_Entity = null;  lst_Entity = new List<row_Entity>();  //-- Список объектов ВД
    asp = new OracleParameter[2] {
      new OracleParameter("cur_viborka", OracleDbType.Cursor, ParameterDirection.Output),
      new OracleParameter("x_codstate", x_codstate)
    };
    wsp.Entity_SP("NCUYAO_GIS.get_ВД", asp, DbToRow);
    if (wsp.wspErr != null) {
    . . .
    //-- Строку выборки из базы данных отражаем на объект класса 
    private void DbToRow(IDataRecord record) {
      xrow = new row_Entity() {
        codobj = record.GetInt64(0),                                          //-- код объекта
        nameobj = record.GetString(1).Trim(),                            //-- Название объекта
        lat = бом.f_Lat(((string)record.GetString(2)).Trim()),       //-- широта места объектов ВД (float)
        lng = бом.f_Lng(((string)record.GetString(3)).Trim()),      //-- долгота места объектов ВД (float)
        kod = record.GetString(4).Trim(),                                    //-- код страны
      };    
      lst_Entity.Add(xrow);
    }
   . . .

2. Класс обработчик

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
namespace wfa_Gis {
  public delegate void dlg_sp(dlg_RowToEntity RowToEntity);
  public delegate void dlg_RowToEntity(IDataRecord reader);

  public static class wsp {
    static OracleDataReader reader;
    public static string wspErr;

    //-- Обработка строк выборки select
    public static void sp_Sel(dlg_RowToEntity RowToEntity) {
      try { while (reader.Read()) { RowToEntity(reader); } }
      catch (System.InvalidOperationException ex) { wspErr = ex.Message; }
      catch (Exception ex) { wspErr = ex.Message; }
    }
    //-- Выполнение хранимой процедуры
    public static void Entity_SP(string spname, OracleParameter[] asp, dlg_RowToEntity RowToEntity) {
      reader = null;
      wspErr = null;

      try {
        using (OracleConnection connection = new OracleConnection(гп.oradb)) {
          connection.Open();
          OracleCommand command = new OracleCommand("", connection);
          command.Parameters.Clear();
          command.Parameters.AddRange(asp);
          command.CommandText = spname;
          command.CommandType = CommandType.StoredProcedure;

          using (reader = (OracleDataReader)command.ExecuteReader()) {
            //-- Формируем коллекцию из выборки
            sp_Sel(RowToEntity); //-- Обратный вызов
          }
        }
      }
      catch (Exception ex) { wspErr = ex.Message; }
    }
  }
}
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671143
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевИмеем цепочку: слой.1(клиент) <--> слой.2 <--> слой.3 <--> слой.4(сервер_приложений) <--> SQL_сервер.
Обмен между слоями идет инфопакетами, которые в слое могут накапливаться в очередях.
Ошибку SQL_сервера обрабатывает сервер_приложений, формирует инфопакет(первый байт которого не 0), который записывает в очередь слоя.3 и т.д.

В каждом слое могут быть свои ошибки. Каждый следующий слой должен кодировать свои ошибки + все ошибки поставщика? Плюс передавать по цепочке разнообразную информацию, которая может помочь правильно обработать ошибку, или хотя бы указать причину.

ВМоисеев2. Класс обработчик
ВМоисеев
Код: c#
1.
public static string wspErr;


ВМоисеев
Код: c#
1.
catch (Exception ex) { wspErr = ex.Message; }



Какой-то привет из девяностых, а не код.
Отвратительный код, не понятно, что с этим wspErr делать, пользователю показывать ошибки СУБД?
Даже если ваш заказчик/начальник понятия не имеет какого отвратительно качества код вы пишите, он всяко не обрадуется в UI сообщениям из СУБД.

И вы уж не принимайте на свой личный счёт. Просто код настолько плох, что у нас даже младшие разработчики (джуниоры), так писать не будут, ибо это стыд и позор.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671153
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

не переживай, он же написал, что проект умер и кроме нас его код никто и не видел
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671154
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAКстати простое отображение OperationResult на HttpResponseMessage с нужным кодом, вместо if-ов :)

Ну дык. А проблемы с сетью? Чтобы не разрываться между двух огней, правильно было бы в ответ на код ошибки таки выбросить исключения. Обёртка клиента, осуществляющая вызовы API не должна транслировать коды HTTP ошибок, если по уму.
А что проблемы с сетью? Почему правильно именно выбросить исключение?
Его же кто-то должен будет обработать. А если ему по барабану на твои проблемы с сетью?

Всё зависит от
...
Рейтинг: 0 / 0
25 сообщений из 406, страница 3 из 17
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Исключения vs коды возвратов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]