Подтвердить что ты не робот

При регистрации, когда ошибка является фатальной?

В рамках ведения журнала, таких как log4j и log4net, вы можете регистрировать различные уровни информации. Большинство уровней имеют очевидные намерения (например, что такое журнал "Отладка" и "Ошибка" ). Тем не менее, одна вещь, за которую я всегда была робкой, была классифицировать мой журнал как "Фатальный".

Какие ошибки настолько серьезны, что их следует классифицировать как смертельные? Хотя это немного зависит от случая, каковы некоторые из правил, которые вы используете при принятии решения о регистрации исключения как фатального или просто ошибки?

4b9b3361

Ответ 1

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

Примеры фатальных ошибок включают в себя:

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

Нефатальные ошибки включают:

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

Ответ 2

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

Ответ 3

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

Если есть вероятность восстановления (например, потеря сетевого соединения с попытками на некоторое время), я бы не использовал фатальный.

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

Ответ 4

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

Но самым важным способом классификации ошибок является последовательное соблюдение эмпирического правила, такого как правило 69 в Стандарты кодирования С++:

"Разработать практическую, последовательную и рациональную политику обработки ошибок на ранней стадии проектирования, а затем придерживаться ее".