2011-01-04 3 views
1

Я хотел бы иметь одно место, где хранятся сообщения об исключениях (они не обращены к пользователю). У меня также есть некоторые исключения, которые могут иметь разные сообщения об ошибках и коды. Эти коды предназначены только для документирования и связи. Однако, имея все сообщения об ошибках в одном месте является очень ценным для обозначения ошибок и обеспечить предлагаемые исправления для операций людейХранение сообщений об исключениях в глобальном местоположении

Я рассматриваю этот:

  1. ResourceBundle для всех сообщений исключения
  2. глобальных перечислений с каждым перечислением, содержащим сообщение и код
  3. enum внутри каждого класса Exception, каждый из которых имеет сообщение и код, которые могут иметь это исключение.

Какой из лучших вариантов?

ответ

1

Ресурсный набор и перечисление не решают одну и ту же часть проблемы. Для локализации (например, resourcebundle или аналогичного) вам нужна как внешняя реализация текста, так и способ идентификации типа сообщения. Перечисление - достойный способ отслеживать тип сообщения, если ваша система не расширяема (вы контролируете все типы исключений). Перечисление не создало бы хорошего типа, если другие могут расширить вашу систему, поскольку у них не будет возможности добавлять новые коды. Я рекомендую использовать строки для типа исключения, поскольку это легко поддается разбиению пространства имен, когда это необходимо.

+0

Я согласен, что они предназначены для разных вещей. Мне не нужно локализовать. Моя система не должна расширяться другими внешними сторонами. Это не библиотека или ничего. Это веб-приложение. Я не понял твое последнее предложение. – treefrog

+1

Если вам нет необходимости в расширяемости, то использование перечисления для типа довольно простой и типичный подход. Последнее предложение связано с проблемами во избежание конфликтов типа исключения в сценариях расширяемости. Ваши коды ошибок могут быть строками, аналогичными именам пакетов java. –

+0

ах. Мне все равно нужно сделать что-то подобное, потому что, если я использую один файл (для перечисления), тогда мне нужно разбить все ошибки. Какие-либо предложения ? Мне нужно как-то поддерживать ассоциацию исключения с ошибками для удобочитаемости/ремонтопригодности. Любые идеи, как? Я добавил третий вариант, вы можете взвесить это? – treefrog

1

Я не могу предложить сделать это. Если вы хотите дать операторам что-то для чтения, используйте некоторую форму Javadoc или doclet, чтобы создать документ, содержащий все Исключительные сообщения в вашей системе. Вы даже можете использовать Doxygen.

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

+0

Я должен был быть более ясным - моя «программа» - это ухо, а сообщения об ошибках - только для тех, кто создан нашим кодом. не sqlexceptions и тому подобное.Я склоняюсь к варианту 2 ..., а как насчет третьего варианта? Я могу en enum внутри каждого класса исключения, с кодом и строкой шаблона для сообщения об ошибке. возможно, тогда я смогу использовать ваши предложения для создания таблицы сообщений об ошибках в системе. не уверен, как это сделать, хотя – treefrog

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

  • Нет связанных вопросов^_^