2008-09-25 8 views
4

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

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

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

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

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

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

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

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

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

+0

На каком языке вы владеете? – 2008-09-25 05:34:24

+0

C/C++ (в Linux) - я отвечу на редактируемый вопрос, но моя цель - библиотека, которая будет использоваться с любым языком (я также использую perl, ассемблер, php, ...) – slashmais 2008-09-25 07:18:43

ответ

1

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

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

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

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

Смежные вопросы