Child pages
  • Словарь ошибок
Skip to end of metadata
Go to start of metadata

С версии 1.20.00

Для систематизации и упорядочивания сообщений ошибок.

Пример использования

$Errors->throw_error(1440006, { lang_vars => { FILENAME => $filename }});

Принцип работы

Создавая объект Control::Errors за стандартным принципом, указывается параметр module.

my $Errors = Control::Errors->new($db, $admin, $conf,
  { lang => $lang, module => 'Portal' }
);

Как четвёртый аргумент даются параметры:

  • module - словарь какого модуля нужно загрузить
  • lang - основа словаря (необязательно)

За путём данного модуля будет загружаться английский словарь с текстами ошибок.
Система будет загружать внутренний модуль ошибок за принципом lazy loading, только при возникновении ошибок.

Внутренний модуль ошибок должен выглядеть так:

package Portal::Errors;

=head1 NAME

  Portal::Errors - returns errors of module Portal

=cut

use strict;
use warnings FATAL => 'all';

#**********************************************************
=head2 errors() - errors list

=cut
#**********************************************************
sub errors {
  return {
    1440001 => 'ERR_PORTAL_NO_SENDER',
    1440002 => 'ERR_PORTAL_NO_ARTICLE',
    1440003 => 'ERR_PORTAL_NEWSLETTER_ALREADY_EXIST',
    1440004 => 'ERR_PORTAL_NEWSLETTER_NOT_EXIST',
    1440005 => 'ERR_PORTAL_NEWSLETTER_DENY_DELETE_ACTIVE',
    1440006 => 'ERR_PORTAL_ATTACHMENT_FAILED_TO_SAVE',
    1440007 => 'ERR_PORTAL_ATTACHMENT_NO_FILES',
    1440008 => 'ERR_PORTAL_MENUS_HAVE_ARTICLES'
  };
}

1;

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

Объекту Control::Errors доступна только одна функция, под названием throw_error, которая принимает:

  • код ошибки
  • хэш опций
    • lang_vars - хэш переменных для изменения текста
    • errstr - оверрайд текста ошибки вашим (код ошибки не меняется)

Данная функция вытягивает вероятный текст ошибки за кодом (Список префиксов кодов здесь), и форматирует в стандартный хэш ошибки, например:

{ errno => 1440006, errstr => "Error on file save: your_file.jpg" }


Это позволяет системе делать необходимые действия за кодом ошибки, так и показывать разработчику (и не только, но не очень рекомендуем) описание ошибки, что случилось не так.

  • No labels