libsim  Versione 7.1.8
Funzioni/Subroutine | Variabili
Riferimenti per il modulo err_handling

Gestione degli errori. Continua...

Funzioni/Subroutine

subroutine, public raise_fatal_error (msg, ierval)
 Stampa il messaggio di errore fornito (e il suo eventuale numero) ed esce. Continua...
 
subroutine, public raise_error (msg, ierval, ier)
 Stampa il messaggio di errore fornito (e il suo eventuale numero). Continua...
 
subroutine, public raise_warning (msg, ierval, ier)
 Stampa il messaggio di avviso fornito (e il suo eventuale numero). Continua...
 
subroutine, public print_info (msg, verblev)
 Stampa il messaggio informativo fornito (e il suo eventuale numero). Continua...
 
subroutine, public eh_setval (fatal, verbose, to_stderr, to_stdout, to_unit)
 

Variabili

integer, parameter, public eh_verbose_err =1
 definisce il livello di disturbo prodotto dai messaggi di errore Continua...
 
integer, parameter, public eh_verbose_warn =2
 definisce il livello di disturbo prodotto dai messaggi di avviso Continua...
 
integer, parameter, public eh_verbose_info =3
 definisce il livello di disturbo prodottodai messaggi informativi Continua...
 

Descrizione dettagliata

Gestione degli errori.

Questo modulo raccoglie procedure utili per la gestione delle condizioni di errore e la stampa dei relativi messaggi in un programma Fortran. Sono previste anche routine per la stampa di messaggi informativi. I messaggi contengono già un'intestazione, per cui non è necessario specificare in essi 'errore' o 'warning'. L'utente della libreria può decidere, al momento dell'esecuzione, quanto vuole essere "disturbato" dai messaggi, specificando il livello di "disturbo" tollerato; il default all'inizio del programma è di permettere di stampare i messaggi di errore, di warning e informativi standard ma non stampare i messaggi informativi con livello di disturbo superiore a eh_verbose_info. Questo fatto può essere sfruttato per inserire nel programma dei messaggi informativi prolissi di debugging che vengono visualizzati solo quando l'utente aumenta esplicitamente il livello di disturbo tollerato.

PROGRAM auto_mobile
INTEGER :: ier
...
IF (debug) THEN
CALL errhandling_set(verbose=eh_verbose_info+1) ! stampa tutto
ELSE
CALL errhandling_set(verbose=eh_verbose_info) ! default, inutile
ENDIF
CALL errhandling_set(fatal=.false.) ! continua in caso di errore
...
CALL metti_in_moto(...,ier)
IF (ier == 8) CALL metti_in_moto_a_spinta(...)
...
IF (benz/benz_tot < 0.1) CALL raise_warning('Abbiamo poca benzina')
CALL print_info('Stiamo andando a '//trim(to_char(speed*3.6))//' all''ora')
CALL print_info('La sai l'ultima?...', eh_verbose_info+1)
...
END PROGRAM auto_mobile
SUBROUTINE metti_in_moto(...,ier)
USE err_handling
INTEGER, INTENT(out) :: ier
...
IF (volt < 12) THEN
CALL raise_error('batteria scarica',8,ier)
RETURN
ENDIF
Gestione degli errori.

Generated with Doxygen.