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

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Актуально с версии 1.20.00

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

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

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

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

Создавая объект Control::Errors за стандартным принципом, указывается параметр MODULE.
За путём данного модуля будет загружаться английский словарь с текстами ошибок.
Система будет загружать внутренний модуль ошибок за принципом 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