Difference between revisions of "Gestione errori"

From SageDev KB
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'errore
  • Errl: riga del programma che ha generato l'errore
  • Errn: codice dell'errore
  • ErrMes$: messaggio d'errore
  • Errm: seconda parte del messaggio d'errore