169 похожих чатов

У меня это всегда вопрос вызывало.. Нафига писать код так,

чтобы потом ошибки вылавливать?

30 ответов

1 просмотр

Данные приходят снаружи. Валидность их не гарантирована

Nik- Автор вопроса
Nik
Будь добр не тэгать мои сообщения

Ты какой-то особенный? Я нормально общаюсь без задних мыслей. Не агрись на пустом месте

Nik- Автор вопроса
zamtmn
Ты какой-то особенный? Я нормально общаюсь без зад...

@Renat_Suleymanov я вежливо пытаюсь оградить себя от общения с данным товарищем

Nik
@Renat_Suleymanov я вежливо пытаюсь оградить себя ...

Он же тебя вообще никак не задевают. Какие сейчас то претензции?

Много компонентов использует этот механизм. Хочешь не хочешь, но обрабатывать это как-то надо

Nik
@Renat_Suleymanov я вежливо пытаюсь оградить себя ...

Надо не ограждаться а общаться нормально и все будет ок

Nik- Автор вопроса
Renat Suleymanov
Он же тебя вообще никак не задевают. Какие сейчас ...

Я попросил его не тэгать мои сообщения. Вежливо. Мне неприятно общение с ним, но функционал телеграма не позволяет заблокировать его в общих чатах.

Nik
Я попросил его не тэгать мои сообщения. Вежливо. М...

Я тебе вежливо отказал. Это общий чат

Nik- Автор вопроса
Kirill Filippenok
Много компонентов использует этот механизм. Хочешь...

Просто надо ввод данных контролировать, а не разгребать потом ошибки ввода. Это моё мнение.

Nik
Просто надо ввод данных контролировать, а не разгр...

Зачем делать работу, которую уже сделали? Если вылетает EConvertError, значит неправильно значение, вот и всё

Kirill Filippenok
Зачем делать работу, которую уже сделали? Если выл...

Исключение - это катапульта. Ты же выходишь из машины, штатно, через дверь?

Nik- Автор вопроса
Kirill Filippenok
Зачем делать работу, которую уже сделали? Если выл...

А выставить контроль вводимых символов что мешает? Это кода проще, чем пытаться потом писать кучу обработчиков на все возможные случаи, приводящие к исключениям

Hemul GM
Не согласен

Ok. Но есть 2 крайности: - Безопасный,(Try{Convert}. SUCCEED, GetLastError) - И Exception Based. Это крайности, повторюсь. Но ты наверняка начинал, когда исключения уже были. Потому так и говоришь. Не делю на черное и белое. Использую. Можно без исключений - лучше без них. В Go их, именно потому и не стали делать.

Nik- Автор вопроса

Там можно себе наваять класс-хэлпер с кучей плюшек и не париться потом написанием кучи кода для обработки исключений

Alexey Gavrilov
Ok. Но есть 2 крайности: - Безопасный,(Try{Convert...

Не, если есть безопасный метод Try*, то конечно. Но всё это зависит от задачи и от того, что требуется получить. Например, если у тебя метод требует чтения значения из конфига и не допускает дефолтного значения, то нет смысла использовать Try* и сразу выдать исключение, что нет значения - работать дальше нельзя

Это... дорого. Зачем давать пользователю вводить неверные данные? Когда можно не давать вводить фигню, как пример. И в худшем случае получать отлуп от базы и откатывать транзакцию.

Nik- Автор вопроса
Hemul GM
Не, если есть безопасный метод Try*, то конечно. Н...

Тут можно маскировку ошибок ввода получить просто на раз и потом на другом совершенно уровне закопаться в разруливании последствий

Nik
Там можно себе наваять класс-хэлпер с кучей плюшек...

Все предусмотреть невозможно, ошибки по ходу выполнения всеравно будут

zamtmn
Все предусмотреть невозможно, ошибки по ходу выпол...

Я пришел к схеме, когда кнопка OK/Save просто не доступна, если данные невалидны. И поля ввода, неправильные, подсвечиваются. Пользователи тупые, надо любить и помогать маленьким неумехам.

Alexey Gavrilov
Это... дорого. Зачем давать пользователю вводить н...

Это один из подходов. Я просто запрещаю дальнейшую обработку, пока не будут указаны корректные значения

Alexey Gavrilov
Я пришел к схеме, когда кнопка OK/Save просто не д...

Валидность это не просто правильный ввод. Это более широкое понятие

Kirill Filippenok
Это один из подходов. Я просто запрещаю дальнейшую...

Боюсь ты не понял... Ошибка уже совершена. Ты борешься с последствиями. А надо бороться с причиной и до этого не доводить. Форма ввода уже может быть разрушена к тому моменту. А если ты сохраняешь там, то ССЗБ. Эти выводы/подход получился не просто потому что "хочу так", а потому что по другому писанины много больше, код и логика сложнее.

zamtmn
Валидность это не просто правильный ввод. Это боле...

Спасибо, Кэп! Но дальше - то что? Если можно снизить уровень бардака в этом конкретном месте, то почему это не сделать? Тем более, если это делает жизнь проще.

Alexey Gavrilov
Спасибо, Кэп! Но дальше - то что? Если можно снизи...

Я к тому что бардак всеравно будет просачиваться и как тут выше рекомендуют я всё проверю, а потом на проверки тратиться небуду - в общем случае невыполнимо

Alexey Gavrilov
Боюсь ты не понял... Ошибка уже совершена. Ты боре...

Я борюсь с причиной. Покажу конкретный пример. На первом скриншоте видно, что нельзя включить использование конкретной зоны, потому что значения либо не валидные, либо не корректные. На втором скриншоте значения уже корректные и валидные, и поэтому я разрешаю использовтаь конкретную зону.

Alexey Gavrilov
Ok. Но есть 2 крайности: - Безопасный,(Try{Convert...

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

Похожие вопросы

Обсуждают сегодня

Добрый день! Пробую отловить исключение EConvertError: function _TryTextToDouble(var DoubleVar: Extended; Text: String): Boolean; begin try DoubleVar := StrToFloat...
Kirill Filippenok
19
Привет, коллеги! Возникла задача ограничить максимальный размер вложений для определённых расширений, например, чтобы для изображений лимит был 10 МБ, а для видео — 100 МБ. Ог...
Andro
1
Сделал краткий обзор магазина из статьи и заодно там же записал инструкцию по развёртыванию. https://www.youtube.com/watch?v=8-sE1vNk95Q (чё думаете по звуку? кое-что поменял...
Andrey K
17
Кароче инфа для тех кто собирает пакеты и в пакетах есть платформозависимые модули. Т.е. такие которые должны подключаться по определенным условиям. У меня в CPU-View как раз ...
Александр (Rouse_) Багель
5
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
+ ну такое. не для новичков. Если нет консоли на вирт хостинге? + нет отсылки ни в видео ни в описании на процесс создания магазина. Сеошники и юзеры не одобрят :) settings.ph...
Дмитрий
12
Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
function LoadMemoryFromInet2( f:TMemoryStream; const url:string; var e:string ):Boolean; var http:TIdHttp; LHandler: TIdSSLIOHandlerSocketOpenSSL;begin Result := fals...
Александр Смоляков
1
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Карта сайта