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

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

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

44 ответов

24 просмотра

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

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, может там тоже своеобразная система исключений. По сути так и есть, мы пишем в лог и выходим из функции, это внешне кажется, что разные механизмы

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

иногда причина твоих ошибок неочевидна. А рядом никаких поясняющих надписей нет. А кнопка "ок" недоступна, несмотря на многочисленные попытки. Какие при этом выражения в адрес разработчика звучат, догадываешься? :)

Nik- Автор вопроса
Nik
Так кто мешает пояснения выводить?

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

Nik- Автор вопроса
Ed Doc
никто. Вопрос в трудозатратах при выборе способа к...

Док, просто надо ООП применять, а не всё в рукопашную преодолевать )

Nik
Док, просто надо ООП применять, а не всё в рукопаш...

Коль, ты умными словами не разговаривай. Ты пальцем покажи 😁

Nik- Автор вопроса
Ed Doc
Коль, ты умными словами не разговаривай. Ты пальце...

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

Ed Doc
иногда причина твоих ошибок неочевидна. А рядом ни...

Неа, потому что хинт рассказывает. Или в доке описано.

Nik
Ну, я вот ленивый программист.. Наваял себе некото...

Коль, сложно еще и это через ООП реализовывать. Это ж какие мозги надо иметь :) Тогда уж проще в OnKeyPress или OnExit/OnEditionDone контроллировать вводимые/введенные данные

Ed Doc
иногда причина твоих ошибок неочевидна. А рядом ни...

Именно поэтому это и делается, потому что, слышать косвенные маты через 3 лиц и невнятные багрепорты, которые оными не являются, намного проблемные.

Alexey Gavrilov
Неа, потому что хинт рассказывает. Или в доке опис...

Леш, кто ж в современным мире доки читает? О чем ты? :))))

Nik- Автор вопроса
Ed Doc
Коль, сложно еще и это через ООП реализовывать. Эт...

Нифига это не сложно ) Там внутри я на эти события и вешаю обработчики уже готовые )

Nik
Нифига это не сложно ) Там внутри я на эти события...

не гибко. И Оккама против. Понадобится тебе изменить условия в обработчике, опять интерфейс писать?

Nik- Автор вопроса
Ed Doc
не гибко. И Оккама против. Понадобится тебе измени...

А у меня прописано так, что назначенные на форме обработчики не перезатираются

Ed Doc
Леш, кто ж в современным мире доки читает? О чем т...

Но хинт или (?) Вопросик можно посмотреть. Я пишу минимальные требования к квалификации. Инструкции по применению. И если оператор неумный, у меня жопа прикрыта. "Рекомендации лучших собаководов."

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта