powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Исключения vs коды возвратов
25 сообщений из 406, страница 4 из 17
Исключения vs коды возвратов
    #39671155
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>skyANA, сегодня, 20:37 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21550771][21550771]
>И почему так? В чём плюсы? Кроме Вас с этим кто-то работает?

Система не 3-х уровневая, а 5-ти.
Инфопакеты надо транспортировать между слоями, некоторым уровням не должно знать их структуру.
Какая разница что не 3, а 5 слоёв? У меня к примеру их 9.

В C# коде можете показать как выглядить Ваш Info-пакет?
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671156
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеевОшибку SQL_сервера обрабатывает сервер_приложений, формирует инфопакет(первый байт которого не 0), который записывает в очередь слоя.3 и т.д.ВМоисеев
Код: c#
1.
public static string wspErr;


Код: c#
1.
2.
catch (System.InvalidOperationException ex) { wspErr = ex.Message; }
catch (Exception ex) { wspErr = ex.Message; }


Код: c#
1.
2.
3.
wsp.Entity_SP("NCUYAO_GIS.get_ВД", asp, DbToRow);
    if (wsp.wspErr != null) {
    . . .



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

а, я понял, Вы прямо в поток пишите массивы байт.
В случае ошибки пишете к примеру new byte[2]{4,10} .

Почему решили изобрести свой велосипед, а не взяли к примеру Protocol Buffers ?
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671176
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, сегодня, 03:02 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553231] [21553231]
>... Каждый следующий слой должен кодировать свои ошибки + все ошибки поставщика?...
Да. Поэтому в крайних версиях пакет ошибки есть byte[???] без шифрования, младший байт которого не равен 0. Содержит код слоя, индекс группы методов, индекс метода в группе, номер шага в алгориме метода и код ошибки. Но не соль, отвлекаемся. Важно, в этой схеме нельзя передать исключение в предыдущий слой.

>...Отвратительный код, не понятно, что с этим wspErr делать…
Блестящий код - компактен, быстр, обозрим, ничего лишнего и нет гирь, типа а-ля EF. Тоже, что и с исключением

Понимаю, что жующие жёлуди, не заценят апельсин.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671182
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>skyANA, сегодня, 09:25 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553322][21553322]
>И где тут "инфопакет(первый байт которого не 0)" и "очередь слоя.3"?...
Как то Вы всё в одну кучу. На это здесь привел два примера из разных систем, на мой взгляд делающие тезис hVostt не состоятельным.
В первом случае нет возможности возвратить исключение, во втором - овчинка выделки не стоит, особенно в этом случае:
await Task.Run(() =>wsp.Entity_SP("NCUYAO_GIS.get_ВД", asp, DbToRow));
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671187
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>skyANA,сегодня, 09:38 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553329][21553329]
>а, я понял, Вы прямо в поток пишите массивы байт…
Не совсем так. В общем случае, обращение к другому слою есть вызов удаленного метода WCF сервиса этого слоя:
byte[] wcf_Мд(byte[]);
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671192
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>skyANA, сегодня, 09:20 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553320] [21553320]
>...В C# коде можете показать как выглядить Ваш Info-пакет?...

Да ради бога:
//=======================================================================
//-- Виды сообщений-запросов, направляемых головному серверу репликации
//=======================================================================

//-- 1. Байтовая строка сообщения-запроса на получение временного параметра
//-- idxСессия{1}+ivСообщения{8})+RSA(keyСессия){128})+Encoder(idxКласс{2}+idxМетод{2}){?}
//-- idxСессия=(byte)255;
//-- idxКласс=(short)0;
//-- idxМетод=0

//-- 2. Байтовая строка сообщения-запроса на получение индекса сессии
//-- idxСессия{1}+ivСообщения{8}+RSA(keyСессия){128}+Encoder(idxКласс{2}+idxМетод{2}+idxСессия{1}+ВП1{8}+ВП2{8}){?}
//-- idxСессия(левая)=(byte)255;
//-- idxСессия(правая)=(byte)? (0<=?<255);
//-- idxКласс=(short)0;
//-- idxМетод=(short)1
//-- ВП1 - время формирования головным сервером репликаций сообшения-ответа
//-- ВП2 - время формирования периферийным сервером репликаций сообшения-запроса

//-- 3. Байтовая строка сообщения-запроса на передачу сообщения от периферийного к головному
//-- idxСессия{1}+ivСообщения{8}+Encoder(Компрессор(idxТип{1}+idxКласс{2}+idxМетод{2}+btПараметры{?}){?}){?}
//-- idxТип=(byte)0;
//-- idxСессия=(byte)? (0<=?<255);
//-- idxКласс=(short)?
//-- idxМетод=(short)?

//-- 4. Байтовая строка сообщения-запроса на передачу сообщения от головного к периферийному
//-- idxСессия{1}+ivСообщения{8}+Encoder(Компрессор(idxТип{1})){?}
//-- idxТип=(byte)255;

//-- 5. Байтовая строка ошибки
//-- btErr{?}
//-- btErr[0]!=(byte)0

//-- Виды сообщений-ответа, возвращаемых головным сервером репликации для периферийного сервера репликаций
//--------------------------------------------------------------------------------------------------------
//-- 1. Не ошибка
//-- btErr{1}+ivСообщения[8])+Encoder(Компрессор(idxКласс{2}+idxМетод{2}+btПараметры{?}){?}){?}
//-- btErr[0]=0;
//-- idxКласс=(short)?
//-- idxМетод=(short)?
//-- 2. Байтовая строка ошибки
//-- btErr{?}
//-- btErr[0]!=(byte)0

//-- Вид сообщений-запросов генерируемых сервером приложения для периферийного сервера репликаций
//-----------------------------------------------------------------------------------------------
//-- Info <-- Компрессор(idxКласс{2}+idxМетод{2}+btПараметры{?}){?}
//-- idxКласс=(short)?
//-- idxМетод=(short)?

//-- Виды сообщений-ответа, возвращаемых периферийным сервером репликации для сервера приложения
//--------------------------------------------------------------------------------------------------------
//-- 1. Не ошибка
//-- btErr{1}=(byte)0;
//-- 2. Байтовая строка ошибки
//-- btErr{?}
//-- btErr[0]!=(byte)0


или Вас интересует программный код формирования
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671196
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>skyANA, сегодня, 09:20 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553320][21553320]
>Какая разница что не 3, а 5 слоёв? У меня к примеру их 9...

Какую информацию Вы передаете между слоями? У меня упакованный шифрованный инфопакет (byte[]).
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671200
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исключения... коды возвратов.... с рукожопами что делать?
1) Вчера качаю мозиллой файл, кончается место на целевом диске. Если открыть список, напротив закачки появляется Failed. И все. Хрен знает, в чем проблема, думал сервер не отдает, пытался перезапускать, открывал заново и начинал качать заново, прежде чем дошло.
2) Сегодня передаю файл через TeamViewer. В целевой папке такой файл уже есть, я расчитывал просто подтверить перезапись. Хрен. Никаких ошибок, висит задание, прогресс 0%, никаких сообщений.

А ведь это не студенческие поделки....
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671201
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>hVostt, сегодня, 03:02 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553231] [21553231]
>... Каждый следующий слой должен кодировать свои ошибки + все ошибки поставщика?...
Да. Поэтому в крайних версиях пакет ошибки есть byte[???] без шифрования, младший байт которого не равен 0. Содержит код слоя, индекс группы методов, индекс метода в группе, номер шага в алгориме метода и код ошибки. Но не соль, отвлекаемся. Важно, в этой схеме нельзя передать исключение в предыдущий слой.

>...Отвратительный код, не понятно, что с этим wspErr делать…
Блестящий код - компактен, быстр, обозрим, ничего лишнего и нет гирь, типа а-ля EF. Тоже, что и с исключением

Понимаю, что жующие жёлуди, не заценят апельсин.
Нет, код реально не читаемый и плохой.
Почитайте что-нибудь по принципы проектирования кода, про чистый код, красивый код, совершенный код, идеальный код.
Написано об этом для инженеров, а не свиней, про которых Вы тут нелепо намекаете.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671207
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProИсключения... коды возвратов.... с рукожопами что делать?
1) Вчера качаю мозиллой файл, кончается место на целевом диске. Если открыть список, напротив закачки появляется Failed. И все. Хрен знает, в чем проблема, думал сервер не отдает, пытался перезапускать, открывал заново и начинал качать заново, прежде чем дошло.
2) Сегодня передаю файл через TeamViewer. В целевой папке такой файл уже есть, я расчитывал просто подтверить перезапись. Хрен. Никаких ошибок, висит задание, прогресс 0%, никаких сообщений.

А ведь это не студенческие поделки....
Что делать, что делать. Таски заводить на исправление
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671208
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>skyANA, сегодня, 09:20 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553320][21553320]
>Какая разница что не 3, а 5 слоёв? У меня к примеру их 9...

Какую информацию Вы передаете между слоями? У меня упакованный шифрованный инфопакет (byte[]).
Разную. И текстовую, и бинарную.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671211
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И шифрованную
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671217
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,

а зачем ты эту портянку передаешь?
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671220
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>skyANA, сегодня, 12:38 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553631][21553631]
>Нет, код реально не читаемый и плохой.

1. Хороший, плохой... Где критерии. Приведите Ваш код. Задача то хорошо формализована - получить выборку из базы, вызвав хранимую процедуру в ней.

2. Не я начинаю
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671224
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>skyANA, сегодня, 12:49 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553669][21553669]
>И шифрованную…
Как?
У меня обмен информацией в следующим слоем есть вызов удаленного метода WCF_сервиса: byte[] wcf_Мд(byte[]);
Метод возвратит либо ошибку, либо полезную информацию.
У Вас?
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671226
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>skyANA, сегодня, 12:38 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553631][21553631]
>Нет, код реально не читаемый и плохой.

1. Хороший, плохой... Где критерии.Принципы SOLID, тестируемость, читаемость...

ВМоисеевПриведите Ваш код. Задача то хорошо формализована - получить выборку из базы, вызвав хранимую процедуру в ней.Приводил уже и Вам понравилось: 20604487

ВМоисеев2. Не я начинаюИменно Вы переходите на личности, хотя критика звучит в сторону кода, а не Вас лично.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671228
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>ViPRos, сегодня, 13:18 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553721][21553721]
>а зачем ты эту портянку передаешь?

Вы о чем?
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671230
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>skyANA, сегодня, 12:49 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553669][21553669]
>И шифрованную…
Как?Да по разному... на базе MD5, SHA-1, SHA-256, RNG и RSA

ВМоисеевУ меня обмен информацией в следующим слоем есть вызов удаленного метода WCF_сервиса: byte[] wcf_Мд(byte[]);
Метод возвратит либо ошибку, либо полезную информацию.
У Вас?Есть и WCF, и REST API, и очереди...
Сейчас вот GraphQL пробуем, там ExecutionResult
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671233
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>skyANA, сегодня, 13:45
>Принципы SOLID, тестируемость, читаемость..
>Приводил уже и Вам понравилось:...
Рассматривая Ваш код, не понимаю, в каком потоке он будет выполняться и смогу ли показать ПрогресБар в UI потоке.
Не понимаю, как формируется контекст. Какую программную гирю Вы добавляете в Ваш код, EF?
Но не называю этот код плохим или …
Вам же показываю рабочий код.

>Именно Вы переходите на личности…
Вы не внимательно читали Трех мушкетёров Дюма.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671234
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>skyANA, сегодня, 13:56 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553777][21553777]
>Есть и WCF, и REST API, и очереди…
Да меня не это интересует. Есть клиент, обменивающийся информацией с географически удаленным 1-ым слоем.
Что есть обмен?
У меня byte[] wcf_Мд(byte[]);
У Вас что?
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671240
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>skyANA, сегодня, 13:45
>Принципы SOLID, тестируемость, читаемость..
>Приводил уже и Вам понравилось:...
Рассматривая Ваш код, не понимаю, в каком потоке он будет выполняться и смогу ли показать ПрогресБар в UI потоке.
Не понимаю, как формируется контекст. Какую программную гирю Вы добавляете в Ваш код, EF?
Показать ProgressBar сможете показать.
Гирь там нет, там же написано:
Код: c#
1.
var command = new SqlCommand("sp_application_select") { CommandType = CommandType.StoredProcedure };


Хорошо, для Вас напишу так, чтобы было понятнее:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
using Context = ApplicationQueryContext;

public class ApplicationQuery : OracleQuery<Context, Application>
{
    protected override IDbCommand CreateCommand(Context context)
    {
        var command = new OracleCommand("sp_application_select") { CommandType = CommandType.StoredProcedure };

        command.Parameters.Add(new OracleParameter("guid", context.Guid));
        command.Parameters.Add(new OracleParameter(""name", context.Name));

        return command;
    }

    protected override Application ToResult(IDataRecord record)
    {
        return new Application { ... };
    }
}};
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671241
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>skyANA, сегодня, 13:56 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553777][21553777]
>Есть и WCF, и REST API, и очереди…
Да меня не это интересует. Есть клиент, обменивающийся информацией с географически удаленным 1-ым слоем.
Что есть обмен?
У меня byte[] wcf_Мд(byte[]);
У Вас что?
Сигнатура метода что-ли нужна? Их не один.

Ну к примеру простое получение списка валют: Task<List<Currency>> GetCurrenciesAsync().
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39671260
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>skyANA, сегодня, 14:20 http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1297921&msg=21553838][21553838]
>Хорошо, для Вас напишу так, чтобы было понятнее:
Мне понятнее не стало.
У меня для полного описания решения задачи получения выборки из базы данных хранимой процедурой, к надо добавить только класс сущности, который обычно определяется внутри другого класса:
Код: 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.
    public class row_Entity {
      private long _codobj;   //-- Код объекта ВД
      private string _nameobj;  //-- Имя объекта ВД 
      private float _lng;      //-- Долгота(x) объекта ВД (float) 
      private float _lat;      //-- Широта(y) объекта ВД (float)
      private string _kod;      //-- Код страны 
      private ushort _idxg;     //-- индекс группы

      public long codobj {
        get { return _codobj; }
        set { _codobj = value; }
      }
      public string nameobj {
        get { return _nameobj; }
        set { _nameobj = value; }
      }
      public float lng {
        get { return _lng; }
        set { _lng = value; }
      }
      public float lat {
        get { return _lat; }
        set { _lat = value; }
      }
      public string kod {
        get { return _kod; }
        set { _kod = value; }
      }
      public ushort idxg {
        get { return _idxg; }
        set { _idxg = value; }
      }
    }


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

Всё зависит от

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

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


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