Как правильно определить и обработать параметризованные сообщения об ошибках в Java? - PullRequest
3 голосов
/ 24 февраля 2012

Примеры

Я видел файлы .properties со следующим соглашением:

Пример 1:

error.connection="Could not connect to host {0}, with IP address: {1}"

Пример 2:

error.connection="Could not connect to host %s, with IP address: %s."

(и файлы XML, подобные приведенным ниже) Пример 3:

<Error id="connection">Could not connect to host {0}, with IP address {1}</Error>

Сообщение об ошибке, определенное в примере 2, может быть обработано так:

// Get error.connection value from .properties file and store it in a variable named ERROR_MESSAGE.
String errorMessage = String.format(ERROR_MESSAGE, hostname, ipAddress);

Этот подход кажется громоздким и опасным, поскольку он требует, чтобы пользователь сообщения об ошибке знал, сколько переменных требуется строке сообщения при вызове String.format

Вопросы

Какова наилучшая практика (включая доступные инструменты) для определения и обработки переменных сообщений об ошибках?Как называется эта практика?

1 Ответ

1 голос
/ 24 февраля 2012

В руководстве по Java предлагается использовать MessageFormat: http://docs.oracle.com/javase/tutorial/i18n/format/messageFormat.html

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

...