Я не люблю передавать исключения дальше по вызову. Сначала я делал так (для примера):
А метод, который вызывает этот метод, проверяет результат на null и сам думает, что делать. Первое время меня это устраивало, так как на моем компьютере у меня исключений никогда не было или они были некритичными для меня.
Однако у пользователей исключения случаются часто и они критичные. Так как я фронт-энд разработчик, то я сделал специальное диалоговое окно, которое выскакивает при исключениях. Содержит извинения и адрес на локальном диске, где собран подробный отчет об ошибке. В отчет входит:
Тематическое пояснение к исключению
Распечатка стека вызовов
Скриншот всего основного монитора на момент исключения
Фрагмент декомпилированного кода, в котором возникло исключение (класс задается явно, так как может интересовать не фронтовой относительно исключения класс, а второй или третий эшелон). Фрагмент включает плюс-минус 30 строчек вокруг строки с ошибкой, с указанием номеров строк и меткой у строки с ошибкой.
Список полей и их значений у некоторых объектов
Сейчас я думаю добавить в диалог галочку, чтобы в отчет добавлялся снимок кучи. Также думаю копировать все отчеты на шару. Ожидаю в день по 100 отчетов.
Exception
Как вы обрабатываете исключения?
Я не люблю передавать исключения дальше по вызову. Сначала я делал так (для примера):
А метод, который вызывает этот метод, проверяет результат на null и сам думает, что делать. Первое время меня это устраивало, так как на моем компьютере у меня исключений никогда не было или они были некритичными для меня.
Однако у пользователей исключения случаются часто и они критичные. Так как я фронт-энд разработчик, то я сделал специальное диалоговое окно, которое выскакивает при исключениях. Содержит извинения и адрес на локальном диске, где собран подробный отчет об ошибке. В отчет входит:
Сейчас я думаю добавить в диалог галочку, чтобы в отчет добавлялся снимок кучи. Также думаю копировать все отчеты на шару. Ожидаю в день по 100 отчетов.
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0