Difference between revisions of "Gestione errori"
Jump to navigation
Jump to search
| Line 15: | Line 15: | ||
Endif | Endif | ||
TRACE=0 #blocco Finally | TRACE=0 #blocco Finally | ||
| + | Onerrgo #azzero il riferimento a programma di gestione errore | ||
$OPENERR | $OPENERR | ||
#Gestisco errore... | #Gestisco errore... | ||
| + | #Se qui si mette End: | ||
| + | # il programma termina | ||
| + | #- se c'è TRANSAZIONE in corso, questa viene ANNULLATA in automatico | ||
Infbox "Errore calcolo: divisione per zero" | Infbox "Errore calcolo: divisione per zero" | ||
TRACE=1 #blocco Catch | TRACE=1 #blocco Catch | ||
| Line 26: | Line 30: | ||
Mettendo ''Resume'' il programma continua con l'istruzione successiva al punto in cui c'è stato l'errore; mettendo ''End'' invece di ''Resume'' il programma termina del tutto. | Mettendo ''Resume'' il programma continua con l'istruzione successiva al punto in cui c'è stato l'errore; mettendo ''End'' invece di ''Resume'' il programma termina del tutto. | ||
Vedere l'help per tutte le funzioni correlate (Errn,Errp...) | Vedere l'help per tutte le funzioni correlate (Errn,Errp...) | ||
| + | |||
| + | |||
| + | == Altro == | ||
| + | * <code>Errp</code>: programma che ha generato l'errore | ||
| + | * <code>Errl</code>: riga del programma che ha generato l'errore | ||
| + | * <code>Errn</code>: codice dell'errore | ||
| + | * <code>ErrMes$</code>: messaggio d'errore | ||
| + | * <code>Errm</code>: seconda parte del messaggio d'errore | ||
Revision as of 11:29, 10 July 2019
In caso di errori a run time l'esecuzione del processo in Sage si interrompe; per evitare un'interruzione bisogna gestire adeguatamente i possibili errori con l'istruzione Onerrgo e Resume.
Ecco un esempio di come gestire gli errori:
TRACE=0
Local Integer VALORE
Onerrgo OPENERR #inizio blocco Try:imposto delegato per la gestione di un eventuale errore
VALORE=41/0
If TRACE=0 #se non ci sono errori
...
Else #se c'è un errore
...
Endif
TRACE=0 #blocco Finally
Onerrgo #azzero il riferimento a programma di gestione errore
$OPENERR
#Gestisco errore...
#Se qui si mette End:
# il programma termina
#- se c'è TRANSAZIONE in corso, questa viene ANNULLATA in automatico
Infbox "Errore calcolo: divisione per zero"
TRACE=1 #blocco Catch
Resume
Mettendo Resume il programma continua con l'istruzione successiva al punto in cui c'è stato l'errore; mettendo End invece di Resume il programma termina del tutto. Vedere l'help per tutte le funzioni correlate (Errn,Errp...)
Altro
Errp: programma che ha generato l'erroreErrl: riga del programma che ha generato l'erroreErrn: codice dell'erroreErrMes$: messaggio d'erroreErrm: seconda parte del messaggio d'errore