Актуально с версии 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" } |
Это позволяет системе делать необходимые действия за кодом ошибки, так и показывать разработчику (и не только, но не очень рекомендуем) описание ошибки, что случилось не так.