Я пишу некоторое клиент-серверное программное обеспечение и сталкиваюсь со следующей проблемой дизайна. Обычно я использую макрос VERIFY очень свободно - если что-то не так на компьютере пользователя, я хочу, чтобы программное обеспечение не работало и регистрировало ошибку, чтобы ее можно было исправить. Я никогда не был фанатом игнорирования каких-либо ошибок.
Однако сейчас я пишу сервер. Если сервер умирает, многие клиенты выходят из строя, поэтому сервер должен умереть как можно меньше. Поэтому я не знаю, как лечить некоторые состояния, которые в противном случае я бы считал фатальными исключениями.
Например, я получаю сетевой пакет от пользователя, который не вошел в систему. Хотя это не должно происходить, у меня достаточно опыта, чтобы знать, что время от времени случаются «невозможные» ошибки. Так что я уверен, что если я сделаю фатальную ошибку в этих случаях, сервер в конечном итоге рухнет. С другой стороны, я мог бы регистрировать и игнорировать ошибку и продолжать, но, боюсь, некоторые ошибки могут остаться незамеченными.
Что бы вы сделали в такой ситуации?