Стандартизированная классификация и обработка ошибок

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

  •  02-07-2019
  •  | 
  •  

Вопрос

Мне нужно стандартизировать то, как я «изящно» классифицирую и обрабатываю ошибки/исключения.

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

Номер ошибки индексирует массив строк, объясняющих тип ошибки, например: «Доступ к файлу», «Пользовательский ввод», «Создание потока», «Доступ к сети» и т. д.Код серьезности имеет двоичный формат ИЛИ 0,1,2 или 4, 0=информативно, 1=повторная попытка пользователя, 2=невозможно_завершить, 4=невозможно_продолжить.Location-info — это модуль и функция, а Extra-info — это значения параметров и локальных переменных.

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

  • Идея состоит в том, чтобы расширить массив типа ошибки, чтобы указать какое-то поведение по умолчанию для данного уровня серьезности, но должно ли это стать предпринятым действием и не дать варианты пользователю?

  • Или:Должно ли такое расширение быть подоружкой параметров, которые необходимо выбрать пользователю?Проблема состоит в том, что варианты по необходимости должны быть обобщенными вариантами, связанными с программированием, которые могут очень ударить полностью сбитым с толку конечного пользователя.

  • Или:Если каждое приложение, которое использует подпрограмму по ошибке, пройдет вдоль собственного массива либо ошибок, либо по умолчанию, но это победит цель библиотеки ...

  • Или:Следует ли обрабатывать уровень тяжести в каждом приложении?

Или:Что ты предлагаешь?Как вы справляетесь с ошибками?Как я могу это улучшить?

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

Решение

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

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

Мне нравятся уровни серьезности.Возможно, у вас может быть подключаемая библиотека сбора ошибок с различными поставщиками вывода ошибок и поставщиками уровней серьезности.

Поставщики вывода могут включать в себя такие вещи, как logginProvider и IgnoreErrorsProvider.Поставщики серьезности, вероятно, будут реализованы в каждом проекте, поскольку уровни серьезности обычно определяются тем типом проекта, в котором это происходит.(Например, проблемы с сетевым подключением более серьезны для банковского приложения, чем для системы управления контактами).

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