Difference between revisions of "Gestione errori"
Jump to navigation
Jump to search
| Line 5: | Line 5: | ||
<pre> | <pre> | ||
| − | + | Local Integer EXCEPTION | |
| + | EXCEPTION=0 | ||
Local Integer VALORE | Local Integer VALORE | ||
Onerrgo OPENERR #inizio blocco Try:imposto delegato per la gestione di un eventuale errore | Onerrgo OPENERR #inizio blocco Try:imposto delegato per la gestione di un eventuale errore | ||
VALORE=41/0 #questa operazione va in errore (divisione per zero) | VALORE=41/0 #questa operazione va in errore (divisione per zero) | ||
| − | #il programma salta su $OPENERR, dove imposta | + | #il programma salta su $OPENERR, dove imposta EXCEPTION=1 |
| − | If | + | If EXCEPTION=0 #se non ci sono errori |
... | ... | ||
Else #se c'è un errore | Else #se c'è un errore | ||
... | ... | ||
Endif | Endif | ||
| − | + | EXCEPTION=0 #blocco Finally | |
Onerrgo #azzero il riferimento a programma di gestione errore | Onerrgo #azzero il riferimento a programma di gestione errore | ||
| Line 26: | Line 27: | ||
#- se c'è TRANSAZIONE in corso, questa viene ANNULLATA in automatico | #- se c'è TRANSAZIONE in corso, questa viene ANNULLATA in automatico | ||
Infbox "Errore calcolo: divisione per zero" | Infbox "Errore calcolo: divisione per zero" | ||
| − | + | EXCEPTION=1 #blocco Catch | |
Resume | Resume | ||
</pre> | </pre> | ||
Revision as of 10:55, 28 January 2020
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:
Local Integer EXCEPTION
EXCEPTION=0
Local Integer VALORE
Onerrgo OPENERR #inizio blocco Try:imposto delegato per la gestione di un eventuale errore
VALORE=41/0 #questa operazione va in errore (divisione per zero)
#il programma salta su $OPENERR, dove imposta EXCEPTION=1
If EXCEPTION=0 #se non ci sono errori
...
Else #se c'è un errore
...
Endif
EXCEPTION=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"
EXCEPTION=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