powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Исключения vs коды возвратов
25 сообщений из 406, страница 2 из 17
Исключения vs коды возвратов
    #39670470
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRДядя Коляодин програмист мне доказывает что коды лучше потому что так Джоэл сказал
что-то не смог нагуглить, кто это такой?
тынц
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670511
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны тынц
Спасибо! Т.е., он (небезосновательно) приравнивает исключения к goto’s и предлагает "нудный" но надежный способ избавится от них.
Joel SpolskyIn C/C++/Java style languages one way you can handle errors is to use the real return value for a result status, and if you have anything you want to return, use an OUT parameter to do that. This has the unforunate side effect of making it impossible to nest function calls, so result = f(g(x)) must become:
Код: plaintext
1.
2.
3.
4.
5.
T tmp;
if (ERROR == g(x, tmp))
     errorhandling;
if (ERROR == f(tmp, result))
     errorhandling;


This is ugly and annoying but it’s better than getting magic unexpected gotos sprinkled throughout your code at unpredictable places.
Кстати, оказывается, он еще и сооснователь Stack Overflow, пожалуй, самого эффективного ресурса (типа "вопрос-ответ") для разработчиков.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670530
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LR,

Со времен той статьи добавили спецификации исключений в деклараторы функций. Часть возражений Джоеля это снимает.

Где то были еще мнения других важных людей.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670540
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRнебезосновательно) приравнивает исключения к goto’sда бросьте вы.
Ерунда.
Тут и обсуждать нечего.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670546
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по мимо немедленного возврата в точку обработки исключения. Само исключение сообщает нам о том, где это исключение было вызвано, возвращает стек и прочую вспомогательную информацию и может вернуть в общем то любые данные, если тип исключения пользовательский. А возврат -1 мне не говорит ровным счетом не о чем. Так как цепочка вызова могла быть огромной, да и в самом методе, не понятно, где собака зарыта.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670557
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRСпасибо! Т.е., он (небезосновательно) приравнивает исключения к goto’s и предлагает "нудный" но надежный способ избавится от них.
У него еще и вот это:
They create too many possible exit points for a function . To write correct code, you really have to think about every possible code path through your function. Every time you call a function that can raise an exception and don’t catch it on the spot, you create opportunities for surprise bugs caused by functions that terminated abruptly, leaving data in an inconsistent state, or other code paths that you didn’t think about.
- я боязнь выделенного жирным встречал только у дельфистов, у которых до 2010-й версии RAD Studio не было оператора возврата из метода, и вследствие этого для них одна точка возврата - аксиома. А всё остальное даже не знаю, как комментировать. Программирование - это, в общем-то, такая штука, где всегда приходится really have to think about, и неважно, о чем - о возрате из функции, возможных исключениях, или еще о чем-то.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670569
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Ерунда.
Тут и обсуждать нечего.
Говорят, гризли - самый опасный зверь в Америке.
Ерунда. Тут и обсуждать нечего.
Я бросил в него восемь камней, а он мне даже ничего не сделал (в отличие от смотрителя зоопарка).
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670578
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LR,
))))
Ну дак тебе 6 мемберов сказали что он не опасен)
Тогда ты белая ворона).
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670612
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

раньше считалось, что те, кто используют GoTo деформируется профессионально. А сейчас идет обратная тенденция. =)
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670627
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Исключения в C# реализованы через SEH. Сильные и слабые стороны этого механизма известны:
достоинства:
* позволяет писать удобный код, без бесконечных проверок if (f(x) == ERROR)...
* позволяет ловить нештатные ошибки
* позволяет финализировать блок кода
* позволяет корректировать ошибки*
недостатки
* нагрузка на компилятор при создании try блока
* тяжёлый нештатный выход из try блока - исключение или goto без leave

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

Что касается того, что выбрать самому, то кроме выбора "исключение или код ошибки" есть и другие варианты. Например, тип Nullable - приятная фишка, что бы можно было возвращать значения через Return, но иметь возможность показать, что что-то пошло не так и избежать как громоздкого кода, так и исключения.

---------------------
* - а кстати, много народу знает об этом? Если, к примеру, было деление на 0, можно в обработчике скорректировать ошибку, вернуться в точку выполнения, и продолжить выполнять код.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670644
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13th* - а кстати, много народу знает об этом? Если, к примеру, было деление на 0, можно в обработчике скорректировать ошибку, вернуться в точку выполнения, и продолжить выполнять код.
Похоже, что в C# аналога нет...
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670666
Дядя Коля
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Дядя Коля,
Какая смешная просьба).
У молодежи же нет авторитетов).
Это в раздел ПТ надо).
у этого авторитеты те кто книги пишет причем только заграничные
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670667
Дядя Коля
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДядя Коля,

При чём тут мнение? Не надо топить или не топить за исключения. Если в языке есть исключения, надо их использовать. Если нет, то коды. Это не вопрос религии или мнения.

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

Лучше ориентироваться на Рихтера, он всё конкретно по полочкам разложил.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670679
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЕсли в языке есть исключения, надо их использовать. Если нет, то коды. Это не вопрос религии или мнения.
Странно, раньше ты был другого мнения 20145877
hVosttИсключения не должны использоваться в ситуациях, которые ты ожидаешь. Например, некорректный ввод пользователя не должен порождать исключение.

...

Возврат и обработка ошибок не стоит делать через механизм исключений. Об этом написано у многих уважаемых авторов. И с опытом приходит понимание почему.

...

Я понимаю, что такие проверки делать лень, проще поймать обобщённый Exception и записать его в лог. Но это не показатель, ни качественной разработки, ни профессионализма.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670683
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

не вижу, как одна цитата противоречит другой
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670727
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё это фигня...
Следует возвращать OperationResult да и вообще писать в функциональном стиле
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670768
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LR13th* - а кстати, много народу знает об этом? Если, к примеру, было деление на 0, можно в обработчике скорректировать ошибку, вернуться в точку выполнения, и продолжить выполнять код.
Похоже, что в C# аналога нет...
Если под аналогом понимаются exception filters, то в 6.0 они появились , и вполне можно написать вот такое:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
class Program
{
  static void Main()
  {
    Console.WriteLine(Divide(0));
  }

  static int Divide(int divider)
  {
    try
    {
      return 100 / divider;
    }
    catch(DivideByZeroException) when(divider==0)
    {
      return Divide(1);
    }
  }
}
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670782
Дядя Коля
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВсё это фигня...
Следует возвращать OperationResult да и вообще писать в функциональном стиле
а какие аргументы?
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670793
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima ThVosttЕсли в языке есть исключения, надо их использовать. Если нет, то коды. Это не вопрос религии или мнения.
Странно, раньше ты был другого мнения 20145877
hVosttИсключения не должны использоваться в ситуациях, которые ты ожидаешь. Например, некорректный ввод пользователя не должен порождать исключение.

...

Возврат и обработка ошибок не стоит делать через механизм исключений. Об этом написано у многих уважаемых авторов. И с опытом приходит понимание почему.

...

Я понимаю, что такие проверки делать лень, проще поймать обобщённый Exception и записать его в лог. Но это не показатель, ни качественной разработки, ни профессионализма.

Мда. Чукча не читатель?
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670795
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВсё это фигня...
Следует возвращать OperationResult да и вообще писать в функциональном стиле

Типа HttpResponseMessage?
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670797
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAOperationResult

Как-то рефакторили блок с этими Result-ами. Из-за того, что исключительные ошибки также в Result складывались. Когда кому-то надоело ковыряться и обрабатывать то, что непонятно как обрабатывать.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670799
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Марксизм не догма, а руководство к действию.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670813
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры ПавловныЕсли под аналогом понимаются exception filters, то в 6.0 они появились , и вполне можно написать вот такое:

Лично я имел ввиду именно возобновление исполнения. exception filters - часть этого механизма. В твоём примере делается повторный вызов. В С++ - возобновление с точки исключения. Прямых аналогов, насколько я знаю, нет нигде.
...
Рейтинг: 0 / 0
Исключения vs коды возвратов
    #39670845
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дядя КоляskyANAВсё это фигня...
Следует возвращать OperationResult да и вообще писать в функциональном стиле
а какие аргументы?
Чистые функции. Легко тестировать. "Поезда" вызовов
...
Рейтинг: 0 / 0
25 сообщений из 406, страница 2 из 17
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Исключения vs коды возвратов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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