HOW TO: Individuare le eccezioni in Visual Basic .NET

Traduzione articoli Traduzione articoli
Identificativo articolo: 301283 - Visualizza i prodotti a cui si riferisce l?articolo.
Questo articolo è stato precedentemente pubblicato con il codice di riferimento I301283
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

L'individuazione e il trattamento delle eccezioni sono normali attività di programmazione. In questo articolo viene mostrato come utilizzare un blocco try-catch-finally per individuare un'eccezione. Il blocco try-catch-finally è un "wrapper" da posizionare attorno a del codice quando esiste la possibilità di un'eccezione.

Il blocco try-catch-finally è costituito dalle seguenti sezioni:
  • Qualsiasi codice che possa generare un'eccezione viene inserito all'interno del blocco try.
  • Se viene generata l'eccezione, viene immesso il blocco catch e il programma può eseguire l'operazione corretta per il ripristino o l'avviso dell'utente.
  • Il codice contenuto nel blocco finally viene sempre eseguito ed è in grado di effettuare una pulitura dopo che si è verificata un'eccezione. Il blocco finally è facoltativo.

Requisiti

Nell'elenco che segue vengono indicati l'hardware, il software, l'infrastruttura di rete e i Service Pack necessari:

  • Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server o Windows NT 4.0 Server
  • Microsoft Visual Basic .NET

Come individuare le eccezioni in Visual Basic .NET

  1. Creare una nuova applicazione console in Visual Basic .NET.
  2. Inserire il codice riportato di seguito nella routine Sub Main(). Nell'esempio vengono dichiarate e inizializzate tre variabili dove l'inizializzazione di "k" causa un errore:
    ' This code generates an exception.
    	Console.WriteLine("We're going to divide 10 by 0 and see what happens...")
    	Console.WriteLine()
    
    	Dim i as Integer = 10
    	Dim j as Integer = 0
    	Dim k As Integer k = i/j ' Error on this line.
  3. Premere F5 per visualizzare l'eccezione.
  4. Utilizzare l'istruzione try-catch come wrapper attorno al codice per acquisire l'errore. Con il codice seguente vengono individuati tutti gli errori generati nel codice e viene visualizzato un messaggio di errore generico. Sostituire il codice della routine Sub Main() con il seguente:
    ' This code shows how to catch an exception.
    Try
    	Console.WriteLine("We're going to divide 10 by 0 and see what happens...")
    	Console.WriteLine()
    
    	Dim i as Integer = 10
    	Dim j as Integer = 0
    	Dim k As Integer k = i/j ' Error on this line. Control jumps to the catch block.
    Catch
    	Console.WriteLine("An error occurred.")
    End Try
  5. Premere CTRL+F5 per eseguire il progetto. Si noti che viene visualizzato il messaggio di errore proveniente dal blocco catch.
  6. Se è necessario ricorrere alla pulitura o a un'elaborazione susseguente nonostante l'errore, utilizzare la parte finally dell'istruzione try-catch-finally. Il codice contenuto nella parte finally dell'istruzione viene sempre eseguito nonostante l'eccezione. Il codice seguente, "This statement is always printed" viene visualizzato nella console, anche se non si sono verificati errori. Sostituire il codice presente in Sub Main() con il seguente:
    ' This code shows how to catch an exception.	
    Try
    	Console.WriteLine("We're going to divide 10 by 0 and see what happens...")
    	Console.WriteLine()
    
    	Dim i as Integer = 10
    	Dim j as Integer = 0
    	Dim k As Integer k = i/j ' Error on this line. Control jumps to the catch block.
    
    Catch
    	Console.WriteLine("An error occurred.")
    Finally   ' This section is performed regardless of the above processing.
    	Console.WriteLine()
    	Console.WriteLine("This statement is always printed")
    End Try
  7. Premere CTRL+F5 per eseguire il progetto.
  8. È possibile servirsi dell'oggetto eccezione con l'istruzione catch per recuperare dettagli riguardanti l'eccezione. Le eccezioni dispongono di varie proprietà, che consentono di identificare informazioni della Guida, informazioni riguardanti l'origine o anche lo stack di un'eccezione. Queste informazioni possono essere molto utili per individuare la causa originale dell'eccezione o fornire una spiegazione migliore della sua origine. Nell'esempio seguente viene individuata un'eccezione e visualizzato un messaggio di errore specifico. Come prima è possibile sostituire il codice contenuto nella routine Sub Main() con il codice seguente: Esempio 1
    ' This code shows how to catch an exception.
    Try
    	Console.WriteLine("We're going to divide 10 by 0 and see what happens...")
    	Console.WriteLine()
    
    	Dim i as Integer = 10
    	Dim j as Integer = 0
    	Dim k As Integer k = i/j ' Error on this line. Control jumps to the catch block.
    
    Catch e As Exception  ' Perform code that deals with the exception
                          ' or informs the user what occurred.
    	Console.WriteLine("The following error occurred:")
    	Console.WriteLine(e.ToString())  ' Print the error message to the user.
    
    Finally   ' This section is performed regardless of the above processing.
    	Console.WriteLine()
    	Console.WriteLine("This statement is always printed")
    End Try
    Esempio 2
    ' This code shows how to catch an exception.
    Try
    	Console.WriteLine("We're going to divide 10 by 0 and see what happens...")
    	Console.WriteLine()
    
    	Dim i as Integer = 10
    	Dim j as Integer = 0
    	Dim k As Integer k = i/j ' Error on this line. Control jumps to the catch block.
    
    Catch e As Exception  ' Perform code that deals with the exception
                          ' or informs the user what occurred.
            Console.WriteLine("The following error occurred:")
            Console.WriteLine( e.Message )     ' Print the error message.
            Console.WriteLine( e.Source )      ' Name of application or object
                                               ' that caused the error
            Console.WriteLine( e.StackTrace )  ' String that contains the stack 
                                               ' trace for this exception
    Finally   ' This section is performed regardless of the above processing.
            Console.WriteLine()
            Console.WriteLine("This statement is always printed")
    End Try
  9. Fino a questo punto si è avuto a che fare con il caso particolare di un'eccezione non specifica. Se tuttavia fosse possibile conoscere in anticipo quale tipo di eccezione si verificherà si potrebbe individuare l'eccezione prevista ed elaborarla di conseguenza. Sarà quindi possibile individuare tutte le altre eccezioni e gestire anche queste. Nell'esempio seguente viene effettuata questa dimostrazione:
    ' We are going to attempt to do some file processing.
    ' This can cause a number of potential exceptions.
    ' Note that you can use the specific exceptions to get extra information about that exception,
    ' but this example focuses on showing control execution for those exceptions.
    
    Try
    	File.Create("c:/temp/test.txt")  ' Can fail for a number of reasons
    
    Catch ioe As System.IO.IOException ' This error may occur if the Temp folder does not exist.
    	Console.WriteLine("An IO error occurred. The c:\temp folder does not exist")
    
    Catch se As System.Security.SecurityException ' You do not have the appropriate permission
                                                  ' to take this action.
    	Console.WriteLine("You don't have the security permissions to take this action!")
    
    Catch e As Exception    ' Catch all other exceptions.
    	Console.WriteLine( e.ToString() )  ' Print the standard exception information.
    End Try
    Poiché i computer possono avere configurazioni diverse, l'esempio contenuto in questa procedura potrebbe generare o non generare un'eccezione. Se si desidera imporre un'eccezione di IO, modificare il percorso in modo che si riferisca a una cartella inesistente nel computer.

RIFERIMENTI

Per ulteriori informazioni consultare Microsoft .NET Framework Software Development Kit (SDK).

Proprietà

Identificativo articolo: 301283 - Ultima modifica: giovedì 21 febbraio 2002 - Revisione: 1.0
Le informazioni in questo articolo si applicano a
  • Microsoft Visual Basic .NET 2002 Standard Edition
Chiavi: 
kbhowto kbhowtomaster KB301283
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com