-+  Associazione
-+  Documenti
 |-  Modern Perl
 |-  Bibliografia
 |-  Articoli
 |-  Talk
 |-  Perlfunc
 |-  F.A.Q.
 |-  F.A.Q. iclp
-+  Eventi
-+  Community
-+  Blog
-+  Link
Corso di Perl



 


indietro

[18] Come si fa un atexit() o setjmp()/longjmp()? (Gestione delle eccezioni)

La versione 5 del Perl ha aggiunto il blocco END che può essere usato per simulare atexit(). Ogni blocco END di un package viene chiamato quando il programma o il thread termina (consultate perlmod per maggiori dettagli).

Per esempio, potete usare quanto segue per assicurarsi che il vostro programma che implementa un filtro possa dare un output senza riempire il disco:

     END {
        close(STDOUT) || die "il close dello STDOUT e` fallito: $!";
     }

Il blocco END non viene chiamato quando un segnale non catturabile termina il programma, quindi se usate dei blocchi END dovreste anche usare

        use sigtrap qw(die normal-signals);

Il meccanismo di gestione delle eccezioni del Perl è il suo operatore eval(). Potete usare eval() come setjmp e die() come longjmp. Per dettagli su questi aspetti consultate la sezione sui segnali, specialmente "time-out handler for a blocking flock()" ["gestore di time out per un flock() non bloccante", NdT] in perlipc/"Signals" ["Segnali", NdT] o la sezione sui "Signals" nel Camel Book.

Se la gestione delle eccezione è tutto quello a cui siete interessati, provate la libreria exceptions.pl (parte della distribuzione perl standard).

Se volete la sintassi atexit() (come pure quella per rmexit) provate il modulo AtExit disponibile su CPAN.

vedi in inglese

AUTORE E COPYRIGHT

Copyright (c) 1997, 1998, 1999, 2000, 2001 Tom Christiansen e Nathan Torkington. Tutti i diritti riservati.

Questa documentazione è libera; puoi ridistribuirla e/o modificarla secondo gli stessi termini applicati al Perl.

Indipendentemente dalle modalitè di distribuzione, tutti gli esempi di codice in questo file sono rilasciati al pubblico dominio. Potete, e siete incoraggiati a farlo, utilizzare il presente codice o qualunque forma derivata da esso nei vostri programmi per divertimento o per profitto. Un semplice commento nel codice che dia riconoscimento alle FAQ sarebbe cortese ma non è obbligatorio.

D:
Progetti e documenti in rilievo
Corso di Perl Progetto pod2it
D:
La ML di Perl.it
mongers@perl.it è la lista ufficiale di Perl Mongers Italia per porre quesiti di tipo tecnico, per rimanere aggiornato su meeting, incontri, manifestazioni e novità su Perl.it.
Iscriviti!
D:
Annunci Google