Мне была предоставлена «возможность» спасти несколько проектов, и руководители заменили всю команду разработчиков, потому что в приложении было слишком много ошибок, а пользователи устали от проблем и ошибок. Все эти кодовые базы имели централизованную обработку ошибок на уровне приложения, как описано в ответе с наибольшим количеством голосов. Если этот ответ - лучшая практика, почему он не сработал и не позволил предыдущей команде разработчиков решить проблемы? Возможно, иногда это не работает? В ответах выше не указано, сколько времени разработчики тратят на исправление отдельных проблем. Если время для решения проблем является ключевым показателем, лучше использовать инструментальный код с блоками try..catch.
Как моя команда исправила проблемы без значительного изменения пользовательского интерфейса? Все просто, каждый метод был снабжен блокировкой try..catch, и все было зарегистрировано в точке сбоя с именем метода, значения параметров метода объединены в строку, переданную вместе с сообщением об ошибке, сообщением об ошибке, именем приложения, датой, и версия. С помощью этой информации разработчики могут запускать аналитику на наличие ошибок, чтобы выявить исключение, которое возникает чаще всего! Или пространство имен с наибольшим количеством ошибок. Он также может подтвердить, что ошибка, возникающая в модуле, правильно обрабатывается и не вызвана несколькими причинами.
Еще одно преимущество этого преимущества заключается в том, что разработчики могут установить одну точку останова в методе регистрации ошибок, и с одной точкой останова и одним щелчком мыши по кнопке отладки «выйти» они находятся в методе, который не удался с полным доступом для реальных объектов в точке отказа, удобно доступны в непосредственном окне. Это делает его очень простым для отладки и позволяет перетаскивать выполнение назад в начало метода, чтобы дублировать проблему, чтобы найти точную строку. Позволяет ли централизованная обработка исключений разработчику воспроизвести исключение за 30 секунд? №
Утверждение «Метод должен перехватывать исключение только тогда, когда он может обрабатывать его каким-либо разумным способом». Это подразумевает, что разработчики могут предсказать или столкнутся с каждой ошибкой, которая может произойти до выпуска. Если бы это был действительно верхний уровень, обработчик исключений приложения не понадобился бы, и не было бы рынка для Elastic Search и logstash.
Этот подход также позволяет разработчикам находить и устранять периодически возникающие проблемы на производстве! Хотите отладку без отладчика в производстве? Или вы предпочитаете принимать звонки и получать электронные письма от расстроенных пользователей? Это позволяет вам решать проблемы до того, как об этом узнает кто-либо другой, и без необходимости отправлять электронные письма, мгновенные сообщения или сообщения в службу поддержки, так как все, что нужно для устранения проблемы, уже здесь. 95% проблем никогда не нужно воспроизводить.
Для правильной работы его необходимо объединить с централизованным ведением журнала, которое может захватывать пространство имен / модуль, имя класса, метод, входные данные и сообщение об ошибке и сохранять в базе данных, чтобы его можно было агрегировать, чтобы выделить наиболее неудачный метод, поэтому это может быть исправлено в первую очередь.
Иногда разработчики предпочитают выбрасывать исключения в стек из блока catch, но этот подход в 100 раз медленнее, чем обычный код, который не генерирует. Поймать и отпустить с ведением журнала является предпочтительным.
Этот метод использовался для быстрой стабилизации приложения, которое каждый час давало сбой большинству пользователей в компании из списка Fortune 500, разработанной 12 разработчиками в течение 2 лет. Используя эти 3000 различных исключений, были выявлены, исправлены, протестированы и развернуты в течение 4 месяцев. Это в среднем исправляет каждые 15 минут в среднем в течение 4 месяцев.
Я согласен с тем, что вводить все необходимое для кодирования кода неинтересно, и я предпочитаю не смотреть на повторяющийся код, но добавление 4 строк кода к каждому методу в конечном итоге того стоит.