Gestione errori
Jump to navigation
Jump to search
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 # per gestione errori imprevisti EXCEPTION=0 Local Integer VALORE Onerrgo MANAGE_EXCEPTION #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 $MANAGE_EXCEPTION #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 #attenzione!! No Return o End: 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...)
Utility comoda per formattare messaggio di errore:
###################################################################################### # Funzione che ritorna un messaggio di errore completo # di un errore (gestitibile con la chiamata Onerrgo) # Esempio di chiamata: func YUTILS.GET_TXT_EXCEPTION(errp, errl, errn, errm) ###################################################################################### Funprog GET_TXT_EXCEPTION(P_ERRP, P_ERRL, P_ERRN, P_ERRM) Value Char P_ERRP() #programma in errore, variabile errp Value Integer P_ERRL #riga di errore, variabile errl Value Integer P_ERRN #codice di errore, variabile errn Value Char P_ERRM() #dettagli di errore, variabile errm Local Clbfile STRCLB(1) STRCLB = "" + & "Programma in errore:" - errp + chr$(10)+ chr$(13) + & "Riga del programma :" - num$(errl) + chr$(10)+ chr$(13) + & "Codice errore :" - num$(errn) + chr$(10)+ chr$(13) + & "Messaggio :" - errmes$(errn) + chr$(10)+ chr$(13) + & "Dettagli :" - errm + chr$(10)+ chr$(13) End STRCLB ######################################################################################
Altro[edit]
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