Spec-Zone.ru › Perl 5.36

Fatal

СОДЕРЖАНИЕ

  • ИМЯ
  • СИНТАКСИС
  • ЛУЧШАЯ ПРАКТИКА
  • ОПИСАНИЕ
  • ДИАГНОСТИКА
  • ОШИБКИ
  • АВТОР
  • ЛИЦЕНЗИЯ
  • СМОТРИТЕ ТАКЖЕ

ИМЯ

Fatal - Замена функций на эквиваленты, которые завершаются успешно или вызывают ошибку

СИНТАКСИС

use Fatal qw(open close);

open(my $fh, "<", $filename);  # No need to check errors!

use File::Copy qw(move);
use Fatal qw(move);

move($file1, $file2); # No need to check errors!

sub juggle { . . . }
Fatal->import('juggle');

ЛУЧШАЯ ПРАКТИКА

Fatal устарел и заменён новым autodie пragma. Пожалуйста, используйте autodie вместо Fatal. autodie поддерживает лексическое охватывание, выбрасывает реальные объекты исключения и предоставляет гораздо более информативные сообщения об ошибках.

Использование :void с Fatal не рекомендуется.

ОПИСАНИЕ

Fatal предоставляет способ удобной замены функций, которые обычно возвращают ложное значение при ошибке, на эквиваленты, которые выбрасывают исключения, если они не выполнены успешно. Это позволяет использовать эти функции без явного проверки возвращаемых значений при каждом вызове. Исключение можно перехватить, используя eval{}. Подробности см. в perlfunc и perlvar.

Эквиваленты do-or-die создаются просто вызовом Fatal's import процедуры, передавая ей имена функций, которые должны быть заменены. Вы можете обернуть как пользовательские функции, так и переопределяемые операторы CORE (кроме exec, system, print, или любого другого встроенного, который нельзя выразить через прототипы) таким образом.

Если символ :void присутствует в списке импорта, то функции, перечисленные позже в этом списке, выбрасывают исключение только при вызове в контексте void — то есть, когда их возвращаемые значения игнорируются. Например:

use Fatal qw/:void open close/;

# properly checked, so no exception raised on error
if (not open(my $fh, '<', '/bogotic') {
    warn "Can't open /bogotic: $!";
}

# not checked, so error raises an exception
close FH;

Использование :void не рекомендуется, так как это может привести к тому, что исключения не будут выбрасываться, если вы случайно вызываете метод без контекста void. Используйте autodie вместо этого, если вам нужно отключить поведение autodying/Fatal для небольшого блока кода.

ДИАГНОСТИКА

Неверное имя подпрограммы для Fatal: %s

Вы вызвали Fatal с аргументом, который не похож на имя подпрограммы или переключатель, понятный этой версии Fatal.

%s не является Perl-подпрограммой

Вы попросили Fatal попытаться заменить подпрограмму, которая не существует или ещё не определена.

%s — это ни встроенная функция, ни Perl-подпрограмма

Вы попросили Fatal заменить подпрограмму, но это не встроенная Perl-функция, и Fatal не смогла найти её как обычную подпрограмму. Она либо не существует, либо ещё не определена.

Невозможно сделать непереопределяемую %s fatal

Вы попытались использовать Fatal на встроенной Perl-функции, которую нельзя переопределить, например, print или system, что означает, что Fatal не может вам помочь, хотя некоторые другие модули могут. См. раздел "СМОТРИТЕ ТАКЖЕ" в этой документации.

Внутренняя ошибка: %s

Вы обнаружили ошибку в Fatal. Пожалуйста, сообщите об этом, используя команду perlbug.

ОШИБКИ

Fatal перекрывает контекст, в котором вызывается функция, и всегда делает его скалярным, за исключением случая, когда используется метка :void. Эта проблема не существует в autodie.

Предупреждения «используется только один раз» могут быть сгенерированы при использовании autodie или Fatal с файловыми дескрипторами пакета (например, FILE). Сильно рекомендуется использовать скалярные файловые дескрипторы вместо этого.

АВТОР

Оригинальный модуль написан Лайонелом Консом (CERN).

Обновления прототипов Ильёй Захаревичем <ilya@math.ohio-state.edu>.

Поддержка autodie, исправления ошибок, расширенная диагностика, system поддержка и основная переработка Полом Фенвиком <pjf@perltraining.com.au>.

ЛИЦЕНЗИЯ

Этот модуль — свободное программное обеспечение, вы можете распространять его на тех же условиях, что и Perl сам по себе.

СМОТРИТЕ ТАКЖЕ

autodie для более удобного использования лексического Fatal.

IPC::System::Simple для похожей идеи для вызовов system() и backticks.

© 1993–2021 Larry Wall and others
Licensed under the GNU General Public License version 1 or later, or the Artistic License.
The Perl logo is a trademark of the Perl Foundation.
https://perldoc.perl.org/5.36.0/Fatal

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API