Локализация исключений

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

table Модель данных представлена таблицей EXCEPTION_TRANSLATIONS, в которой хранится перечень локализованных значений исключений:

DESCRIPTION – описание локализации;

TYPE_PATTERN – тип исключения;

MESSAGE_PATTERN – текст исключения;

USE_REGEXP – флаг, указывающий на использование регулярных выражений (подробное описание регулярных выражений можно найти на сайте MSDN link eng/rus) в полях TYPE_PATTERN и MESSAGE_PATTERN;

TEXT – локализованный текст для исключений соответствующего типа (TYPE_PATTERN) и текста (MESSAGE_PATTERN);

LANG_ID (FK) – язык локализации;

SORT_INDEX – индекс сортировки локализаций. Для двух одинаковых пар локализаций тип-текст будет использована локализация с большим значением индекса.

35_example

Рассмотрим работу механизма локализации исключений на примере:

Exception_Localization_1

Чтобы локализовать данное исключение, добавим соответствующую его типу (Exception) и тексту (Message) запись в таблицу EXCEPTION_TRANSLATIONS:

DESCRIPTION

ApplicationException | Константа не найдена

TYPE_PATTERN

System.ApplicationException

MESSAGE_PATTERN

Константа не найдена

USE_REGEXP

0

TEXT

Константа не найдена. Скопируйте текст ошибки и отправьте его разработчикам по адресу dev@company.com

LANG_ID

1

SORT_INDEX

1

В результате сообщение об ошибке будет выглядеть следующим образом:

Exception_Localization_2

Если исключение имеет вложенные исключения, локализуется только первое:

Exception 1

tree Exception 2

tree Exception 3

=>

Translated Exception 1

tree Exception 2

tree Exception 3

Если исключение имеет среди вложенных несериализованное исключение, локализуются все:

Exception 1

tree Non Serializable Exception 2

tree Exception 3

=>

Translated Exception 1

tree Translated Non Serializable Exception 2

tree Translated Exception 3