la gestione degli errori Perl
Il programma è in esecuzione, incontra sempre una serie di errori, come l'apertura di un file che non esiste.
Il programma è in esecuzione si arresta se si verifica un errore, abbiamo bisogno di utilizzare alcuni metodi per evitare errori di rilevamento, impedendo così il programma viene chiuso.
Perl fornisce un errore di multi-processing fatta nel metodo, allora abbiamo introdotto uno per uno.
if
se l'istruzione in grado di determinare il valore di ritorno della dichiarazione, gli esempi sono i seguenti:
if(open(DATA, $file)){ ... }else{ die "Error: 无法打开文件 - $!"; }
Programma variabile $! Restituito un messaggio di errore. Possiamo anche semplificare il codice qui sopra per il seguente codice:
open(DATA, $file) || die "Error: 无法打开文件 - $!";
a meno che la funzione
salvo funzione e se al contrario, solo quando l'espressione restituisce false sarà attuato come segue:
unless(chdir("/etc")){ die "Error: 无法打开目录 - $!"; }
a meno che la dichiarazione in cui si desidera impostare un promemoria errore è molto utile.Quello che posso anche essere abbreviato come il codice di cui sopra:
die "Error: 无法打开目录!: $!" unless(chdir("/etc"));
Il messaggio di errore solo quando le circostanze cambieranno output di errore di directory.
operatore ternario
Quanto segue è un semplice esempio di un operatore ternario:
print(exists($hash{value}) ? '存在' : '不存在',"\n");
Gli esempi sopra riportati che usiamo l'operatore ternario per determinare esiste il valore hash.
Esempi includono l'espressione di due valori, il formatoè :? Un valore dell'espressione: Valore II.
funzione di mettere in guardia
funzione di mettere in guardia è utilizzato per attivare un messaggio di avviso, nessun altra operazione, l'output STDERR (file di output standard), di solito utilizzato per richiedere all'utente:
chdir('/etc') or warn "无法切换目录";
la funzione die
funzione dado è simile ad avvertire, ma sarà un'uscita. Di solito con i messaggi di errore ad alta voce di uscita del rumore:
chdir('/etc') or die "无法切换目录";
modulo Carp
In script Perl, metodo comunemente usato è quello di utilizzare il rapporto di errore avverte () or die () per generare report o di errore. Per il modulo carpa, che può generare messaggi per fornire ulteriori livelli di controllo, in particolare all'interno del modulo.
modulo Carp standard fornisce un warn () e muoiono () è un'alternativa, che forniscono ulteriori informazioni per la fornitura di posizionamento sbagliato, e più amichevole. Quando viene utilizzato in un modulo, il messaggio di errore contiene il nome del modulo e il numero di linea.
funzione di carpe
funzione di carpa può uscita monitoraggio delle informazioni sul programma, simile per mettere in guardia la funzione normalmente inviare le informazioni a STDERR:
package T; require Exporter; @ISA = qw/Exporter/; @EXPORT = qw/function/; use Carp; sub function { carp "Error in module!"; } 1;
Nello script chiama la seguente procedura:
use T; function();
Il programma precedente, l'uscita è:
Error in module! at test.pl line 4
funzione cluck
cluck () e mettere in guardia () è simile, a condizione che l'errore al camino posteriore traccia.
package T; require Exporter; @ISA = qw/Exporter/; @EXPORT = qw/function/; use Carp qw(cluck); sub function { cluck "Error in module!"; } 1;
Nello script chiama la seguente procedura:
use T; function();
Il programma precedente, l'uscita è:
Error in module! at T.pm line 9 T::function() called at test.pl line 4
funzione gracidio
gracchiare () e muoiono (), come si può finire script.
package T; require Exporter; @ISA = qw/Exporter/; @EXPORT = qw/function/; use Carp; sub function { croak "Error in module!"; } 1;
Nello script chiama la seguente procedura:
use T; function();
Il programma precedente, l'uscita è:
Error in module! at test.pl line 4
funzione di confessare
confessare () e muoiono () è simile, ma offre l'errore di stack posteriore traccia.
package T; require Exporter; @ISA = qw/Exporter/; @EXPORT = qw/function/; use Carp; sub function { confess "Error in module!"; } 1;
Nello script chiama la seguente procedura:
use T; function();
Il programma precedente, l'uscita è:
Error in module! at T.pm line 9 T::function() called at test.pl line 4