LINUX.ORG.RU
ФорумTalks

[ненависть][программизды] игнорирование ошибок

 


0

2

у меня одного такое ощущение, что программизды в своих изобретениях стали стесняться показывать сообщения об ошибках? это HIG? или мода такая?

Evolution - вообще пожизненный молчок. может я неправильно им пользовался, но если пропадает инет, или IMAP посылает на 3 буквы - он тупо молчит. Нету почты и все тут.

на андроиде каждая вторая софтина с таким приколом - нету сети - ничего не работает, и _молча_.

Примеров еще много, сейчас не вспомню все, но собственно последняя капля, спровоцировавшая данный пост - HomeBank - закончилось место на диске (да, бывает такое несчастье), нажимаю на «Сохранить» - оно _молчит_, и выдает файл на 0 байт. Я потерял историю домашнего бюджета за 2 недели (да, бекапы, но как-то получилось что последний бекап - 2-х недельной давности, и бекапы не должны решать кривизну софта).

Выдох.

★★★★★

на андроиде каждая вторая софтина с таким приколом - нету сети - ничего не работает, и _молча_.

Ни разу такого не было.

o
()
Ответ на: комментарий от post-factum

>А всё ради того, чтобы лишний раз не пугать хомячков.

и это убивает. неужели ни до кого не доходит что хомячки это не 100% ЦА? что есть люди которые умеют читать...

dib2 ★★★★★
() автор топика

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

Zhbert ★★★★★
()
Ответ на: комментарий от o

ну про сеть - это просто один из примеров. с отображением ошибок там плоховато

dib2 ★★★★★
() автор топика
Ответ на: комментарий от o

>Ни разу такого не было.

4.2 Было много раз. Вот вроде бы сидишь ты в деревне, MeeboIM радостно работает, пишешь в джаббер другу о том, как прекрасно все вокруг, пишешь, пишешь, оно горит статусом «в сети». А оказывается, что сеть уде минут 10 как отвалилась и ты пишешь в пустоту...

Zhbert ★★★★★
()

> на андроиде каждая вторая софтина с таким приколом - нету сети - ничего не работает, и _молча_.

а теперь представь, ты со своим ондроедом въехал в тоннель, у тебя пропала сеть и стопиццот программ показали тебе кукишь с надписью «пропала сеть» и кнопками «Ок» и «Отмена». Сколько времени тебе понадобится, чтобы нажать на все отмены и не пропустить то окно, в котором надо нажать «Ок»?

name_no ★★
()
Ответ на: комментарий от name_no

зачем мне 100500? от сервисов? пускай хотя-бы текущий Activity покажет!

dib2 ★★★★★
() автор топика

Только Ынтырпрайз код пичкают кучей проверок и т.д. Давно известный факт же. А опенсорц и пр. просто не работает, ибо «сам дурак» :)

Andru ★★★★
()
Ответ на: комментарий от name_no

> а теперь представь, ты со своим ондроедом въехал в тоннель, у тебя пропала сеть и стопиццот программ показали тебе кукишь с надписью «пропала сеть» и кнопками «Ок» и «Отмена». Сколько времени тебе понадобится, чтобы нажать на все отмены и не пропустить то окно, в котором надо нажать «Ок»?

Это что, блджад, повод делать вид, что сеть есть, и отправлять все исходящие сообщения в /dev/null?

geekless ★★
()
Ответ на: комментарий от Andru

у ынтырпрайза другая проблема (из опыта) - там хер кого заставишь распарсить что за ошибка и почему (хотя уже стараешься-ж, русским по серому, с кодом, с пояснением, и даже с возможными вариантами решения - один хер - «написало 'ошибка' и я перезапустил»)

dib2 ★★★★★
() автор топика
Ответ на: комментарий от post-factum

ППКС, всегда был уверен в этом.

dib2 ★★★★★
() автор топика

Evolution показывает сообщения об ошибках внизу, типа как строка статуса. Меня вот как раз в винде напрягало, что на каждый чих вылазит окно с характерным звуком, chord, кажется он называется. И обязательно это окно закрывать. А если еще и окон таких куча...!!!! Нет, мне нравится больше без них.

hibou ★★★★★
()
Ответ на: комментарий от geekless

> Это что, блджад, повод делать вид, что сеть есть, и отправлять все исходящие сообщения в /dev/null?

а куда их ещё тебе отправлять, в /dev/astral?

name_no ★★
()

Да. Программы-молчуны не нужны. У меня их и нет

different_thing
()
Ответ на: комментарий от name_no

> а куда их ещё тебе отправлять, в /dev/astral?

Их, блджад, не надо отправлять. Надо сказать, что сети нет и отправка невозможна.

geekless ★★
()
Ответ на: комментарий от geekless

> Надо сказать, что сети нет и отправка невозможна.

И как он тебе должен определить, что сети нет? Это блин, прикладное приложение, а не ядрёный модуль. В общем случае, он даже не знает, каким именно интерфейсом он пользуется для отправки сообщения в сеть, и поэтому не может проверить даже включен ли этот интерфейс. Ему теперь что, пинговать свой сервер беспрерывно, чтобы на каждый лаг тебе отправку сообщений блочить и нагонять на московских пользователей 3G интернета ужас счетами за мобильную связь?

name_no ★★
()

все потому, что на каждую цепочку благоприятных действий, приводящих к полезному результату, приходится 10 цепочек неблагоприятных исходов, каждый из которых нужно суметь предвидеть, в нужном месте отловить и еще придумать, как правильно обработать. а самое главное, что этот один благоприятный исход может быть таким простым и примитивным, что посмотрев на твою программу, люди (или еще хуже - заказчики) скажут - и это типа все? - да я такую хрень за вечер накропаю - 100500 обработчиков всевозможных ошибок никто не заметит, точнее их замечают только тогда, когда их нет.

bender ★★★★★
()

>игнорирование ошибок

On error resume next… :)

Deleted
()
Ответ на: комментарий от name_no

try/catch вокруг процедуры sendMessage, сокет с таймаутом.

bender ★★★★★
()
Ответ на: комментарий от hibou

нету его! висит, кружится, часами! (например если ломиться на IMAP с неподдерживаемым типом аутентификации). я и не говорю про окна и звуки, но дать возможность ПРОЧИТАТЬ в чем проблема - это must have.

dib2 ★★★★★
() автор топика
Ответ на: комментарий от dib2

> таймауты ... еще не придумали?

а вот это уже к любимому всеми Линусу вопрос. Потому что в такой вот ситуации: программа проверят наличие сети и видит, что сеть есть; в этот момент аппарат теряет вышку; программа отправляет сообщение, и ждёт ответа; вышка появляется, а сообщение уже просралось — повторной отправкой сообщения должно заниматься совершенно не приложение, которое даже не в курсе про то, что существует какая-то вышка или базовая станция, которая может куда-то пропасть.

И программа тупо отправила по ТСР твоё сообщение и ждёт от тебя следующего, совершенно не заморачиваясь, куда оно там пропало, потому что TCP — это протокол с гарантированной доставкой.

Так что, повторюсь, вопросы в Линусу.

name_no ★★
()
Ответ на: комментарий от name_no

Ты только что написал:

а теперь представь, ты со своим ондроедом въехал в тоннель, у тебя пропала сеть и стопиццот программ показали тебе кукишь с надписью «пропала сеть» и кнопками «Ок» и «Отмена».

А теперь ты вопрошаешь меня:

И как он тебе должен определить, что сети нет?

Ты идиот. Это не оскорбление, а медицинский факт. Ты не можешь удержать в своей голове то, что сам полчаса назад из неё изрек. Ты идиот.

geekless ★★
()

регулярно такое вижу. Это потому что 80% софта это обработка ошибок.

Отчасти из-за лени, но по большей части из-за тупости ошибки просто не отлавливаются или игнорируются. Больше всего этим страдают похапе-программизды потому что у них есть «@» (подавлять ошибки) и вообще скрипт продолжает работать даже если что-то там внутри не сложилось.

true_admin ★★★★★
()
Ответ на: комментарий от name_no

потому что TCP — это протокол с гарантированной доставкой.

повторюсь, вопросы в Линусу.

Это всё бред, в любой приличной книге по IPC написано чего стоят эти гарантии. В описанном тобой случае вина висит на программиздах потому что tcp не отменяет явное подтверждение доставки.

Если ты знаешь как работает tcp ты поймёшь почему он работает именно так.

true_admin ★★★★★
()
Ответ на: комментарий от name_no

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

dib2 ★★★★★
() автор топика
Ответ на: комментарий от true_admin

Самое печальное в том, что большинство этих творцов не в теме, что @ это не подавление ошибок как таковое, а переключение режима работы интерпретатора.

Лучше бы они все ставили error_reporting и/или display_errors в 0...

winddos ★★★
()
Ответ на: комментарий от n_play

> просто очень мало программ обрабатывают вызов close() для файлов.

Ошибка «нет места» должна детектироваться во время write(), а не close().

geekless ★★
()

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

Sadler ★★★
()
Ответ на: комментарий от name_no

> Сколько времени тебе понадобится, чтобы нажать на все отмены и не пропустить то окно, в котором надо нажать «Ок»?

<толсто>Мышевозопроблемы.</толсто>

HiddenComplexity
()
Ответ на: комментарий от true_admin

> В описанном тобой случае вина висит на программиздах потому что tcp не отменяет явное подтверждение доставки.

ну вот тебе в описанной ситуации: программа засунула свои байты в сокет и пока ACK не придёт — она из send не выйдет. А вышка не отвечает, ядро пакет повторяет, программа ждёт и ничего сделать не может. Это может длиться минуту или две. За это время geekless размажет тонну говна по ЛОРу и снсёт приложение нафиг со своего телефона. И, самое интересное — что делать проге, когда она наконец получи от send'а ошибку? Писать, что интернет отвалился? Так вот же он, пока она ждала завершения своего send'а — базовая станция снова появилась. Попробовать второй раз отправить, прежде, чем рапортовать об отсутствии интернета? Так geekless'а инфаркт хватит, пока вторая попытка завершится.

Видели мы такие ошибки, обрабатывали, знаем.

name_no ★★
()
Ответ на: комментарий от qnikst

> что правда, а чтож это у меня ошибки писания в сокет возникают:/

не повезло тебе

name_no ★★
()
Ответ на: комментарий от Sadler

> Юзайте треды.

Будет истерика у гиклеса. Прога получила от пользователя тект и пошла его отправлять, пять минут у неё уходит на то, чтобы понять, что нифига не получится (да даже если всего одна минута) — гиклес за это время ещё пять сообщений отправит, а потом напишет, что прога их в /dev/null засунули и ему не сказала. И на самом деле — что проге делать с этими его сообщениями через эти пять минут? Только выкинуть.

name_no ★★
()
Ответ на: комментарий от name_no

> программа засунула свои байты в сокет и пока ACK не придёт — она из send не выйдет.

Понятно, про треды ты еще не слышал.

geekless ★★
()
Ответ на: комментарий от name_no

> Будет истерика у гиклеса. Прога получила от пользователя тект и пошла его отправлять, пять минут у неё уходит на то, чтобы понять, что нифига не получится (да даже если всего одна минута) — гиклес за это время ещё пять сообщений отправит, а потом напишет, что прога их в /dev/null засунули и ему не сказала. И на самом деле — что проге делать с этими его сообщениями через эти пять минут? Только выкинуть.

Толстенький, заканчивай свои унылые вбросы. Даже под виндой быдлоквип давно решил вопрос дизайна интерфейса «что делать с недоставленными сообщениями?» очевиднейшим ответом: доставленные и недоставленные сообщения необходимо отмечать разными значками. А доблестному name_no-ну ядро мешает правильно танцевать. Плохое ядро, негодное. Ох оно какое нехороше, ядро. Вот то ли дело name_no — правильный, годный, всегда придумает, как переложить с больной головы на здоровую.

geekless ★★
()
Ответ на: комментарий от name_no

программа засунула свои байты в сокет и пока ACK не придёт — она из send не выйдет

Ты не понимаешь как оно работает. Управление вернется в программу как только всё влезет в ядерный буфер вне зависимости от того дошли данные или нет. В man send явно это написано: «No indication of failure to deliver is implicit in a send()».

true_admin ★★★★★
()
Ответ на: комментарий от name_no

> Я тебя вообще игнорирую

«А с тобой я не разговариваю!» Первый класс, вторая четверть.

geekless ★★
()
Ответ на: комментарий от qnikst

а чтож это у меня ошибки писания в сокет возникают:/

они возникают гораздо позже реального разрыва связи и ты не узнаешь сколько байтов дошло а сколько потерялось.

true_admin ★★★★★
()
Ответ на: комментарий от name_no

> потому что TCP — это протокол с гарантированной доставкой

не, бл*, ну он то с гарантированной. но эта гарантированность она как бы это объяснить.. если сети немая, никто ничего не гарантирует на самом деле.

AndreyKl ★★★★★
()
Ответ на: комментарий от name_no

Если письмо не отправилось, то почтовый клиент об этом уж точно знает ))

vasily_pupkin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.