Latest web development tutorials

Обработка ошибок Perl

Программа работает, всегда сталкиваются с различными ошибками, например, открытие файла, который не существует.

Программа работает под управлением остановится, если происходит ошибка, нам необходимо использовать некоторые методы, чтобы избежать ошибок обнаружения, таким образом предотвращая выхода из программы.

Perl обеспечивает ошибку в многопроцессорной обработки, сделанное в методе, то мы ввели один за другим.


если заявление

если оператор может определить возвращаемое значение заявления, примеры заключаются в следующем:

if(open(DATA, $file)){
   ...
}else{
   die "Error: 无法打开文件 - $!";
}

Программа переменной $! Возвращается сообщение об ошибке. Мы также можем упростить код, указанный выше на следующий код:

open(DATA, $file) || die "Error: 无法打开文件 - $!";

если не функции

если функция и если , наоборот, только тогда , когда выражение возвращает ложь будет осуществляться следующим образом :

unless(chdir("/etc")){
   die "Error: 无法打开目录 - $!";
}

если заявление , когда вы хотите установить напоминание об ошибке не очень полезно.То, что я также может быть сокращено как приведенный выше код:

die "Error: 无法打开目录!: $!" unless(chdir("/etc"));

Данное сообщение об ошибке только тогда, когда обстоятельства изменятся выход ошибки каталога.


троичный оператор

Ниже приведен простой пример троичного оператора:

print(exists($hash{value}) ? '存在' : '不存在',"\n");

Приведенные выше примеры, которые мы используем тернарный оператор, чтобы определить значение хеш-функции не существует.

В качестве примеров можно выражение двух значений, формат:? значение выражения: Значение II.


предупредит функцию

предупредит функция используется, чтобы вызвать предупреждающее сообщение, никакой другой работы, выход на STDERR (стандартный выходной файл), как правило, используется для запроса пользователя:

chdir('/etc') or warn "无法切换目录";

функция штампа

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

chdir('/etc') or die "无法切换目录";

модуль Карп

В сценарии Perl, часто используемый метод заключается в использовании отчет об ошибке предупредить () или умереть () функции для создания отчетов или сообщение об ошибке. Для модуля карп, который может генерировать сообщения, чтобы обеспечить дополнительные уровни контроля, особенно внутри модуля.

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

функция карп

Функция карп может выводить информацию об отслеживании о программе, аналогичной предупредить функцию, как правило, посылают информацию в STDERR:

package T;

require Exporter;
@ISA = qw/Exporter/;
@EXPORT = qw/function/;
use Carp;

sub function {
   carp "Error in module!";
}
1;

В сценарии вызывает следующую процедуру:

use T;
function();

Вышеприведенная программа, выход:

Error in module! at test.pl line 4

функция кудахтать

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

package T;

require Exporter;
@ISA = qw/Exporter/;
@EXPORT = qw/function/;
use Carp qw(cluck);

sub function {
   cluck "Error in module!";
}
1;

В сценарии вызывает следующую процедуру:

use T;
function();

Вышеприведенная программа, выход:

Error in module! at T.pm line 9
	T::function() called at test.pl line 4

хрип функция

квакают () и умереть (), как может закончить сценарий.

package T;

require Exporter;
@ISA = qw/Exporter/;
@EXPORT = qw/function/;
use Carp;

sub function {
   croak "Error in module!";
}
1;

В сценарии вызывает следующую процедуру:

use T;
function();

Вышеприведенная программа, выход:

Error in module! at test.pl line 4

исповедывать функция

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

package T;

require Exporter;
@ISA = qw/Exporter/;
@EXPORT = qw/function/;
use Carp;

sub function {
   confess "Error in module!";
}
1;

В сценарии вызывает следующую процедуру:

use T;
function();

Вышеприведенная программа, выход:

Error in module! at T.pm line 9
	T::function() called at test.pl line 4