Spec-Zone.ru › Perl 5.38

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. Пожалуйста, используйте autodie вместо Fatal. autodie поддерживает лексическое область видимости, генерирует реальные объекты исключений и предоставляет более удобные сообщения об ошибках.

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

ОПИСАНИЕ

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

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

Если символ :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 не рекомендуется, так как это может привести к тому, что исключения не будут сгенерированы, если вы случайно вызовете метод без контекста без значения. Используйте 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). Сильно рекомендуется использовать скалярные файловые дескрипторы вместо этого.

АВТОР

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

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

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

ЛИЦЕНЗИЯ

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

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

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

IPC::System::Simple для аналогичной идеи вызовов system() и обратных кавычек.

© 1993–2023 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.38.0/Fatal

Spec-Zone.ru

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