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

StackOverflow https://stackoverflow.com/questions/313351

Вопрос

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

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

Это было полезно?

Решение

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

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

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

К числу неустранимых ошибок относятся:

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

Другие советы

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

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

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

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

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

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

  

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top