Вот сейчас юзали прогу из Windows Store. Windows 10. Gismeteo называется.
Куда то исчез город, один из избранных. При попытке его добавить -- тупо закрывается без объяснений.
Причем не первый раз вижу такое поведение в разных программах.
Ну зачем такое делать?
Ну отлови ты, дурень, ексепшен. Сделай, дурень, ролбек если нужно. Ну выведи сообщение что операцию выполнить не удалось. Но закрывать то, дурень, зачем?
Здравствуйте, Shmj, Вы писали:
S>Ну отлови ты, дурень, ексепшен. Сделай, дурень, ролбек если нужно. Ну выведи сообщение что операцию выполнить не удалось. Но закрывать то, дурень, зачем?
Здравствуйте, Shmj, Вы писали:
S>Вот сейчас юзали прогу из Windows Store. Windows 10. Gismeteo называется.
S>Куда то исчез город, один из избранных. При попытке его добавить -- тупо закрывается без объяснений.
S>Причем не первый раз вижу такое поведение в разных программах.
S>Ну зачем такое делать?
S>Ну отлови ты, дурень, ексепшен. Сделай, дурень, ролбек если нужно. Ну выведи сообщение что операцию выполнить не удалось. Но закрывать то, дурень, зачем?
Здравствуйте, Shmj, Вы писали:
S>Ну отлови ты, дурень, ексепшен. Сделай, дурень, ролбек если нужно. Ну выведи сообщение что операцию выполнить не удалось. Но закрывать то, дурень, зачем?
Именно потому, что где-то не отловили ошибку, оно и закрывается.
Здравствуйте, Shmj, Вы писали:
S>Ну зачем такое делать?
Потому что альтернатива — на неотловленном исключении молча продолжать выполнение — ещё хуже.
S>Ну отлови ты, дурень, ексепшен. Сделай, дурень, ролбек если нужно. Ну выведи сообщение что операцию выполнить не удалось. Но закрывать то, дурень, зачем?
Feedback-то авторам написал? По времени — как пост накатать, а пользы всяко больше.
Здравствуйте, Shmj, Вы писали:
S>Здравствуйте, alpha21264, Вы писали:
A>>Не знаешь, что такое Segmentation Fault?
S>Дядя, 2017 год на дворе. Приложение на управляемом .Net коде, которое к памяти обратиться не может. S>Приложение всего лишь получает через HTTP REST -api данные и выводит на экране. Все.
Ну, во-первых ты про "управляемый код" не сказал.
Во-вторых, это не панацея.
В-третьих, программист должен глазами различать ситуацию,
когда программа сама закрылась и когда её операционка убила.
Здравствуйте, Ops, Вы писали:
Ops>Здравствуйте, alpha21264, Вы писали:
A>>Не знаешь, что такое Segmentation Fault?
Ops>А там точно оно? Твое что ли творение, раз знаешь?
Нет, мне из ЦРУ доложили.
Ops>Куда больше вероятность, что какое-то другое исключение не отловлено.
Ну, про вероятности не скажу.
Но имею мнение, что ловить исключения поодинчке — это как-то глупо.
Нужно ставить обработчик на все.
Здравствуйте, alpha21264, Вы писали:
A>Нужно ставить обработчик на все.
Сервер на Java. Для большого портала гос.конторы. Около 200 различных форм.
До того, как поставил обработчик на всё, пользователю возвращались простые и спокойные белые экраны.
Нарекания приходили редко.
После установки стали валиться заявки на то, что "обнаружено неучтённое прерывание".
С одной стороны полезно — пользователь участвует в отладке.
С другой стороны, нарекания начальство не любит.
Уже были разговоры типа — убери ты перехват прерываний, спрячь от пользователя ошибки!
P.S. Исправляя старые ошибки, мы создаём новые))) (Шутка!)
Здравствуйте, Shmj, Вы писали:
S>Причем не первый раз вижу такое поведение в разных программах.
Используемый runtime этому способствует.
S>Ну зачем такое делать?
Самое интересное что и разработчик такого поведения не ожидает. Оно само так получается
Здравствуйте, Shmj, Вы писали:
S>Ну отлови ты, дурень, ексепшен. Сделай, дурень, ролбек если нужно. Ну выведи сообщение что операцию выполнить не удалось. Но закрывать то, дурень, зачем?
Эхх, то ли дело в старые добрые. Поставил on error resume next в начале каждой функции, и вообще ничего делать не надо. Программа никогда не упадет.
Здравствуйте, Sinix, Вы писали:
S>>Ну зачем такое делать? S>Потому что альтернатива — на неотловленном исключении молча продолжать выполнение — ещё хуже.
А зачем "молча"?
Можно же выдать окошко "Случилось страшное. Текст исключения: ..." и пусть юзер сам принимает решение перезапустить приложение или попытаться продолжить.
Часто бывает, так что вылет в неважной функции и он не критичен, а схлопывается все приложение.
Вот если сервер, то может логика задампиться и упасть и не плоха. А для гуи-приложения — это плохая идея.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
VD>А зачем "молча"? VD>Можно же выдать окошко "Случилось страшное. Текст исключения: ..."
+1 VD>и пусть юзер сам принимает решение перезапустить приложение или попытаться продолжить.
а тут уже разработчику из кода виднее, есть ли шанс и стоит ли дальше. если ошибка критическая
и после неё нет смысла то лучше таки да показать ошибку и оставить одну кнопочку юзеру — ок
а вообще конечно это признак некачественного софта ибо такая ошибка да ещё не отловленная
это точно ошибка программирования.
Здравствуйте, Shmj, Вы писали:
S>Вот сейчас юзали прогу из Windows Store. Windows 10. Gismeteo называется. S>Куда то исчез город, один из избранных. При попытке его добавить -- тупо закрывается без объяснений. S>Причем не первый раз вижу такое поведение в разных программах. S>Ну зачем такое делать? S>Ну отлови ты, дурень, ексепшен. Сделай, дурень, ролбек если нужно. Ну выведи сообщение что операцию выполнить не удалось. Но закрывать то, дурень, зачем?
приложения в Windows Store рассчитаны в основном на мобильные устройства , где ты там ошибки показывать будешь?
ну и задумано было так и по вроде как стандару мс в случае такой ошибки оно должно просто заново стартовать.
Ибо для всего мусора из Store совсем безпроблемно в случaе критической ошибки новый старт сделать.
последнее предложение думаю в тему т.е про философию
Здравствуйте, night beast, Вы писали:
NB>это точно для философии тема?
Вы про саму тему изначально, или только под-тему?
По вопросу — вы даже себе не представляете насколько это философская тема! (три!!!).
Вы не поверите, батлы а "надо ли валить ядро, при ошибке", до сих пор мне во сне всё еще сняться. ))
==
"Валить" приложение по ошибке _надо_ — ибо непредсказуемое поведение. То есть — иначе "ракета может и нечайно получить команду на старт".