Должно ли приложение аварийно завершить работу или продолжить работу, отмечая проблему? - PullRequest
1 голос
/ 05 августа 2010

Параметры:

1) При неправильном вводе приложение вылетает и выводит на консоль сообщение о том, что произошло

2) При неправильном вводе приложение выбрасывает ввод и продолжает работу, как будто ничего не произошло (хотя проблема в отдельном файле журнала отсутствует).

Хотя 2 может показаться очевидным решением, приложение является движком и основой для разработки игр, поэтому, если пользователь что-то пишет и делает что-то не так, может быть полезно, чтобы эта проблема была сразу очевидна (сбой приложения) вместо того, чтобы игнорировать его, и пользователь потенциально забывает проверить журнал, чтобы увидеть, были ли какие-либо проблемы (может забыть, если запрограммированное поведение не очень заметно на экране, поэтому он не улавливает, что оно отсутствует). *

Ответы [ 5 ]

4 голосов
/ 05 августа 2010

Не существует универсального решения.Это действительно зависит от ситуации и от того, насколько плохой ввод.

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

2 голосов
/ 05 августа 2010

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

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

1 голос
/ 05 августа 2010

Вообще говоря, ничего не должно сбой при вводе пользователем. Может ли приложение продолжить с записанной ошибкой или сразу же остановиться, есть что-то полезное для настройки.

Если слишком легко игнорировать ошибки, люди просто сделают это, вместо того, чтобы исправлять их. С другой стороны, иногда ошибка - это не то, что вы можете исправить, или она совершенно не связана с тем, над чем вы работаете, и она задерживает вашу текущую задачу. Так что это немного зависит от того, кто пользователь.

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

0 голосов
/ 05 августа 2010

Зависит от того, в чем проблема.Когда я программирую и пишу обработку ошибок, я использую это как свою мантру:

Это исключение действительно исключительное?

Значение, это ошибка на входе или какое-либо условие"не нормально" восстанавливаемый?В случае игры исключение File not Found для текстуры может быть восстановлено, и вы можете показать текстуру по умолчанию, чтобы знать, что что-то сломалось.

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

Это сводится к следующему: может ли приложение продолжать работать без проблем?

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

0 голосов
/ 05 августа 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...