manipulação de erro Perl
O programa está sendo executado, sempre encontrar uma variedade de erros, como abrir um arquivo que não existe.
O programa está sendo executado pára se ocorrer um erro, precisamos usar alguns métodos para evitar a detecção de erros, evitando assim o programa sai.
Perl fornece um erro de multi-processamento feito no método, então introduzidos um a um.
if
se a declaração pode determinar o valor de retorno da declaração, os exemplos são os seguintes:
if(open(DATA, $file)){ ... }else{ die "Error: 无法打开文件 - $!"; }
Programa $ variable! Obtivemos uma mensagem de erro. Nós também pode simplificar o código acima para o seguinte código:
open(DATA, $file) || die "Error: 无法打开文件 - $!";
a menos que a função
a menos que a função e se o contrário, somente quando a expressão retorna false será implementado da seguinte forma:
unless(chdir("/etc")){ die "Error: 无法打开目录 - $!"; }
a menos que a declaração quando você deseja definir um erro de lembrete é muito útil.O que também pode ser abreviado como o código acima:
die "Error: 无法打开目录!: $!" unless(chdir("/etc"));
A mensagem de erro acima somente quando as circunstâncias vão mudar saída de erro diretório.
operador ternário
O que se segue é um exemplo simples de um operador ternário:
print(exists($hash{value}) ? '存在' : '不存在',"\n");
Os exemplos acima usamos o operador ternário para determinar o valor existir hash.
Exemplos incluída uma expressão de dois valores, o formatoé :? Um valor da expressão: Value II.
função de advertir
função de advertir é usado para disparar uma mensagem de aviso, nenhuma outra operação, a saída para STDERR (arquivo de saída padrão), geralmente utilizado para solicitar ao usuário:
chdir('/etc') or warn "无法切换目录";
função die
função die é semelhante para avisar, mas vai ser uma saída. Geralmente com mensagens de erro de saída de ruído alto:
chdir('/etc') or die "无法切换目录";
módulo Carp
No script Perl, método comumente usado é usar o relatório de erros warn () ou morrer () função para gerar relatórios ou erro. Para o módulo Carp, que pode gerar mensagens para fornecer níveis adicionais de controle, especialmente dentro do módulo.
módulo Carp norma fornece um warn () e morrer () função é uma alternativa, eles fornecem mais informações na prestação de posicionamento errado, e mais amigável. Quando utilizado num módulo, a mensagem de erro contém o nome do módulo e número de linha.
função de carpa
função carpa pode saída de rastreamento de informações sobre o programa, similar para avisar função normalmente enviar as informações para STDERR:
package T; require Exporter; @ISA = qw/Exporter/; @EXPORT = qw/function/; use Carp; sub function { carp "Error in module!"; } 1;
No script chama o procedimento a seguir:
use T; function();
O programa acima, a saída é:
Error in module! at test.pl line 4
função cluck
cluck () e warn () é semelhante, desde o erro no rastreamento regressivo da pilha.
package T; require Exporter; @ISA = qw/Exporter/; @EXPORT = qw/function/; use Carp qw(cluck); sub function { cluck "Error in module!"; } 1;
No script chama o procedimento a seguir:
use T; function();
O programa acima, a saída é:
Error in module! at T.pm line 9 T::function() called at test.pl line 4
função coaxar
coaxar () e morrer (), como pode terminar script.
package T; require Exporter; @ISA = qw/Exporter/; @EXPORT = qw/function/; use Carp; sub function { croak "Error in module!"; } 1;
No script chama o procedimento a seguir:
use T; function();
O programa acima, a saída é:
Error in module! at test.pl line 4
função confessares
confess () e die () é semelhante, mas oferece a partir do erro de rastreamento regressivo da pilha.
package T; require Exporter; @ISA = qw/Exporter/; @EXPORT = qw/function/; use Carp; sub function { confess "Error in module!"; } 1;
No script chama o procedimento a seguir:
use T; function();
O programa acima, a saída é:
Error in module! at T.pm line 9 T::function() called at test.pl line 4