Рекомендовать шаблон проектирования / подход к выявлению / терпению / восстановлению после системных ошибок, обработке исключений (Java, C ++, Perl, PHP) - PullRequest
1 голос
/ 15 сентября 2011

Можете ли вы порекомендовать шаблон проектирования / подход к выявлению / переносу / восстановлению после системных ошибок, обработке исключений (Java, C ++, Perl, PHP)?

О некоторых ошибках нужно сообщать.

Некоторые ошибки могут быть обработаны внутренне (путем повторной попытки или несущественны (могут быть проигнорированы).

Как вы структурируете код, чтобы поймать их?

Но все ошибки должны быть зарегистрированы.

Какие существуют лучшие практики?

А для того, чтобы имитировать их, чтобы можно было полностью протестировать компоненты, на которые они воздействуют?

Общий вопрос, не относящийся к языку программирования, применимый к нескольким современным языкам программирования, но приветствовал бы примеры иллюстраций шаблонов, подходов и философий на Java, C ++, PHP и Perl.

1 Ответ

5 голосов
/ 15 сентября 2011

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

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

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

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