Вы можете гарантировать что ваш «GIU элемент» в процессе краша не влез в память где хранится переменная с номером счета клиента и в итоге не привел к отправке денег к черту на куличики?
Если уверены то да, не надо падаться, надо обрабатывать и продолжать работу.
Design by contract (TM) (also called Contract Programming) is another example of a Fail fast! feature. This is because invalid values for input/output arguments and object attributes are immediately detected and raise a program error at runtime.
There are many more Fail fast! features that can be built into a programming language.
После того как написал текст про исключения мне были представлены два факта:
1) Текст получился сумбурным
2) Я описал Fail fast! подход.
Хорошенько разобравшись в ситуации понял, что лучше мне не пытаться рассказывать об этом самостоятельно, а перевести уже существующую статью. Тем более что на русском материалов на эту тему парктически нет.
Пример про Гагарина — один в один пример про ракету на Марсе из статьи. Где как раз и говорится, что в этой ситуации надо использовать Forgive.
Действительно создается ощущение что статьюв ы не дочитали.
Хм. Два часа ночи дают о себе знать.
«не было никакого смысла отправлять в релиз ПО с fail fast»
«нет никакого смысла в том»
«автоматизируют обработку ошибок и отправку отчетов на Windows»
Тут есть нюанс.
Под виндой, особенно раньше, не было никакого смысла в релиз ПО с fail fast. Потому что без поддержки отчетов об ошибках отсылаемых разработчикам нет никакого смысла от того, что программа на стороне пользователя упала.
Но сейчас ситуация иная.
Есть множество инструментов, которые автоматизируют обработку ошибок на Windows и можно быть уверенным, что падение не будет бесполезным.
На Андроиде так вообще уже встроенная система отчетов используется.
Ну и исправление ошибки пользователем очень уж специфичная вещь не так уж часто встречается, чтобы при разработке на этот момент обращать внимание.
Ответ достаточно очевиден:
Выгрузить драйвер, написать в журанл об этом, сообщить пользователю что в драйвере произошла ошибка.
Если есть информацию о разработчиках драйвера — отослать им отчет об ошибке.
fail fast тут не применим, потому что задача fail fast обрабатывать ситуации нерпедсказуемые, а не полностью заменять обработку ошибок.
Цель вашего вопроса показать, что fail fast не применим в 100% случаев?
Ну так об это и в тексте написано. Никто не предлагает пихать fail fast без разбору везде.
Тебе поможет железяка под названием ELM327. Стоит не особо дорого.
Умеет работать с бортовыми компьютерыми и передавать данные на RS232 или Bluetooth.
Ее протокол в свободном доступе. Сможет передать все что ей расскажет бортовой компьютер.
Удачи!
Решение более чем спорное, но интересное и результат дает — на выходе отчет об ошибке с call stack внутри.
Хотя мне видится, что включить исключения является значительно более корректным решением.
3dg.me/ru/2d-graphics/genetica-36-moshchnyy-redaktor-i-generator-besshovnyh-tekstur
Если уверены то да, не надо падаться, надо обрабатывать и продолжать работу.
О чем?
Про ЗБТ ничего не говорил.
Что же это, как не продажа за полцены забагованного приложения?
В идеальном мире.
Вспомните сколько раз падали сервера Diablo 3 за время с его старта.
В программировании подругому и не бывает.
1) Текст получился сумбурным
2) Я описал Fail fast! подход.
Хорошенько разобравшись в ситуации понял, что лучше мне не пытаться рассказывать об этом самостоятельно, а перевести уже существующую статью. Тем более что на русском материалов на эту тему парктически нет.
Действительно создается ощущение что статьюв ы не дочитали.
«не было никакого смысла отправлять в релиз ПО с fail fast»
«нет никакого смысла в том»
«автоматизируют обработку ошибок и отправку отчетов на Windows»
Под виндой, особенно раньше, не было никакого смысла в релиз ПО с fail fast. Потому что без поддержки отчетов об ошибках отсылаемых разработчикам нет никакого смысла от того, что программа на стороне пользователя упала.
Но сейчас ситуация иная.
Есть множество инструментов, которые автоматизируют обработку ошибок на Windows и можно быть уверенным, что падение не будет бесполезным.
На Андроиде так вообще уже встроенная система отчетов используется.
Ну и исправление ошибки пользователем очень уж специфичная вещь не так уж часто встречается, чтобы при разработке на этот момент обращать внимание.
Выгрузить драйвер, написать в журанл об этом, сообщить пользователю что в драйвере произошла ошибка.
Если есть информацию о разработчиках драйвера — отослать им отчет об ошибке.
fail fast тут не применим, потому что задача fail fast обрабатывать ситуации нерпедсказуемые, а не полностью заменять обработку ошибок.
Ну так об это и в тексте написано. Никто не предлагает пихать fail fast без разбору везде.
Умеет работать с бортовыми компьютерыми и передавать данные на RS232 или Bluetooth.
Ее протокол в свободном доступе. Сможет передать все что ей расскажет бортовой компьютер.
Удачи!
Решение более чем спорное, но интересное и результат дает — на выходе отчет об ошибке с call stack внутри.
Хотя мне видится, что включить исключения является значительно более корректным решением.