Difference between revisions of "EN/Documentation/BASIC Guide/Error Handling"
(New page: {{EN/Documentation/BASICGuideTOC/v2 |ShowPrevNext=block |ShowPrevPage=block |PrevPage=Documentation/BASIC Guide/Procedures and Functions |NextPage=Documentation/BASIC Guide/Runtime Library...) |
|||
Line 6: | Line 6: | ||
|lang=block | |lang=block | ||
}} | }} | ||
− | {{DISPLAYTITLE: | + | {{DISPLAYTITLE:Gestione degli errori}} |
− | + | La corretta gestione delle situazioni di errore è una delle attività di programmazione che richiede più tempo. {{OOo}} Basic fornisce un'ampia gamma di strumenti per semplificare la gestione degli errori. | |
− | ==<tt>On Error</tt> | + | == L'istruzione <tt>On Error</tt>== |
− | <tt>On Error</tt> | + | L'istruzione <tt>On Error</tt> è fondamentale per la gestione degli errori: |
<source lang="oobas"> | <source lang="oobas"> | ||
Line 24: | Line 24: | ||
</source> | </source> | ||
− | <tt> | + | La riga <tt>On Error Goto ErrorHandler</tt> definisce il modo in cui {{OOo}} Basic procede in caso di errori. L'istruzione <tt>Goto ErrorHandler</tt> verifica che {{OOo}} Basic esca dalla riga di programma corrente, quindi esegue il codice <tt>ErrorHandler:</tt>. |
− | ==<tt>Resume | + | == Il comando <tt>Resume</tt>== |
− | <tt>Resume Next</tt> | + | Il comando <tt>Resume Next</tt> fa proseguire il programma dalla riga seguente al punto in cui si è verificato l'errore nel programma, dopo l'esecuzione del codice nel gestore di errori: |
<source lang="oobas"> | <source lang="oobas"> | ||
Line 36: | Line 36: | ||
</source> | </source> | ||
− | + | Usate il comando <tt>Resume Proceed</tt> per specificare il punto in cui far proseguire il programma dopo la gestione dell'errore: | |
<source lang="oobas"> | <source lang="oobas"> | ||
Line 47: | Line 47: | ||
</source> | </source> | ||
− | + | Per far proseguire un programma senza un messaggio di errore quando si verifica un | |
+ | errore, utilizzate il formato seguente: | ||
<source lang="oobas"> | <source lang="oobas"> | ||
Line 56: | Line 57: | ||
</source> | </source> | ||
− | + | Utilizzate il comando <tt>On Error Resume Next</tt> con cautela, perché ha un effetto globale. | |
− | == | + | == Ricerche riguardanti informazioni sugli errori == |
− | + | Nella gestione degli errori, è utile disporre di una descrizione dell'errore e sapere dove e perché si è verificato: | |
− | *<tt>Err</tt> | + | * La variabile <tt>Err</tt> contiene il numero di errori verificatisi. |
− | *<tt>Error$</tt> | + | * La variabile <tt>Error$</tt> contiene una descrizione dell'errore. |
− | *<tt>Erl</tt> | + | * La variabile <tt>Erl</tt> contiene il numero della riga in cui si è verificato l'errore. |
− | + | La chiamata | |
<source lang="oobas"> | <source lang="oobas"> | ||
Line 72: | Line 73: | ||
</source> | </source> | ||
− | + | mostra come l'informazione sull'errore può essere visualizzata in una finestra di messaggio. | |
− | {{Documentation/Note| | + | {{Documentation/Note|Mentre VBA riassume i messaggi di errore in un oggetto statistico denominato <tt>Err</tt>, {{OOo}} Basic fornisce le variabili <tt>Err,</tt> <tt>Error$</tt> e <tt>Erl</tt>.}} |
− | + | Le informazioni di stato rimangono valide finché il programma non incontra un comando <tt>Resume</tt> o <tt>On Error</tt>, quindi l'informazione viene ripristinata. | |
− | {{Documentation/Note|VBA | + | {{Documentation/Note|In VBA, il metodo <tt>Err.Clear</tt> dell'oggetto <tt>Err</tt> ripristina lo stato di errore dopo che si è verificato un errore. In {{OOo}} Basic, questa operazione viene espletata con i comandi <tt>On Error</tt> o <tt>Resume</tt>. }} |
− | == | + | == Suggerimenti per la gestione strutturata degli errori == |
− | + | Sia il comando di definizione, <tt>On Error</tt> che il comando <tt>Resume</tt> sono varianti del costrutto <tt>Goto</tt>. | |
− | + | Per strutturare chiaramente il codice in modo da impedire la generazione di errori quando si utilizza questo costrutto, evitate l'uso di comandi di salto senza monitorarli. | |
− | + | Utilizzate il comando <tt>On Error Resume Next</tt> con cautela, perché chiude tutti i messaggi di errore aperti. | |
− | + | La soluzione migliore è adottare un unico approccio di gestione degli errori all'interno del programma: tenere la gestione degli errori separata dal codice effettivo del programma e non tornare al codice originale dopo che si è verificato l'errore. | |
− | + | Il seguente è un esempio di un errore della procedura di gestione: | |
<source lang="oobas"> | <source lang="oobas"> | ||
Line 113: | Line 114: | ||
</source> | </source> | ||
− | + | Questa procedura inizia con la definizione di un gestore di errori, seguito dal codice effettivo del programma. Alla fine del codice del programma, la gestione degli errori è disattivata dalla chiamata <tt>On Error Goto 0</tt> e l'implementazione della procedura è terminata dal comando <tt>Exit Sub</tt>(da non confondersi con <tt>End Sub</tt>). | |
− | + | L'esempio controlla prima se il numero di errore corrisponde al numero previsto (memorizzato nella costante immaginaria <tt>ExpectedErrorNo</tt>) e quindi gestisce l'errore di conseguenza. Se si verifica un altro errore, il sistema emette un'avvertenza. È importante controllare il numero di errore in modo da poter rilevare gli errori imprevisti. | |
− | + | La chiamata <tt>On Error Goto 0</tt> alla fine del codice ripristina le informazioni di stato dell'errore (il codice di errore nelle variabili di sistema <tt>Err</tt>) in modo che possiate riconoscere con chiarezza un errore verificatosi in data successiva. | |
{{PDL1}} | {{PDL1}} | ||
{{InterWiki_Languages_BasicGuide|articletitle=Documentation/BASIC Guide/Error Handling}} | {{InterWiki_Languages_BasicGuide|articletitle=Documentation/BASIC Guide/Error Handling}} |
Revision as of 18:22, 25 June 2009
Template:EN/Documentation/BASICGuideTOC/v2
La corretta gestione delle situazioni di errore è una delle attività di programmazione che richiede più tempo. Apache OpenOffice Basic fornisce un'ampia gamma di strumenti per semplificare la gestione degli errori.
Contents
L'istruzione On Error
L'istruzione On Error è fondamentale per la gestione degli errori:
Sub Test On Error Goto ErrorHandler ' ... undertake task during which an error may occur Exit Sub ErrorHandler: ' ... individual code for error handling End Sub
La riga On Error Goto ErrorHandler definisce il modo in cui Apache OpenOffice Basic procede in caso di errori. L'istruzione Goto ErrorHandler verifica che Apache OpenOffice Basic esca dalla riga di programma corrente, quindi esegue il codice ErrorHandler:.
Il comando Resume
Il comando Resume Next fa proseguire il programma dalla riga seguente al punto in cui si è verificato l'errore nel programma, dopo l'esecuzione del codice nel gestore di errori:
ErrorHandler: ' ... individual code for error handling Resume Next
Usate il comando Resume Proceed per specificare il punto in cui far proseguire il programma dopo la gestione dell'errore:
ErrorHandler: ' ... individual code for error handling Resume Proceed Proceed: ' ... the program continues here after the error
Per far proseguire un programma senza un messaggio di errore quando si verifica un errore, utilizzate il formato seguente:
Sub Test On Error Resume Next ' ... perform task during which an error may occur End Sub
Utilizzate il comando On Error Resume Next con cautela, perché ha un effetto globale.
Ricerche riguardanti informazioni sugli errori
Nella gestione degli errori, è utile disporre di una descrizione dell'errore e sapere dove e perché si è verificato:
- La variabile Err contiene il numero di errori verificatisi.
- La variabile Error$ contiene una descrizione dell'errore.
- La variabile Erl contiene il numero della riga in cui si è verificato l'errore.
La chiamata
MsgBox "Error " & Err & ": " & Error$ & " (line : " & Erl & ")"
mostra come l'informazione sull'errore può essere visualizzata in una finestra di messaggio.
Le informazioni di stato rimangono valide finché il programma non incontra un comando Resume o On Error, quindi l'informazione viene ripristinata.
Suggerimenti per la gestione strutturata degli errori
Sia il comando di definizione, On Error che il comando Resume sono varianti del costrutto Goto.
Per strutturare chiaramente il codice in modo da impedire la generazione di errori quando si utilizza questo costrutto, evitate l'uso di comandi di salto senza monitorarli.
Utilizzate il comando On Error Resume Next con cautela, perché chiude tutti i messaggi di errore aperti.
La soluzione migliore è adottare un unico approccio di gestione degli errori all'interno del programma: tenere la gestione degli errori separata dal codice effettivo del programma e non tornare al codice originale dopo che si è verificato l'errore.
Il seguente è un esempio di un errore della procedura di gestione:
Sub Example ' Define error handler at the start of the function On Error Goto ErrorHandler ' ... Here is the actual program code On Error Goto 0 ' Deactivate error handling ' End of regular program implementation Exit Sub ' Start point of error handling ErrorHandler: ' Check whether error was expected If Err = ExpectedErrorNo Then ' ... Process error Else ' ... Warning of unexpected error End If On Error Goto 0 ' Deactivate error handling End Sub
Questa procedura inizia con la definizione di un gestore di errori, seguito dal codice effettivo del programma. Alla fine del codice del programma, la gestione degli errori è disattivata dalla chiamata On Error Goto 0 e l'implementazione della procedura è terminata dal comando Exit Sub(da non confondersi con End Sub).
L'esempio controlla prima se il numero di errore corrisponde al numero previsto (memorizzato nella costante immaginaria ExpectedErrorNo) e quindi gestisce l'errore di conseguenza. Se si verifica un altro errore, il sistema emette un'avvertenza. È importante controllare il numero di errore in modo da poter rilevare gli errori imprevisti.
La chiamata On Error Goto 0 alla fine del codice ripristina le informazioni di stato dell'errore (il codice di errore nelle variabili di sistema Err) in modo che possiate riconoscere con chiarezza un errore verificatosi in data successiva.
Content on this page is licensed under the Public Documentation License (PDL). |