Share via


Istruzione try...catch...finally

Implementa la gestione degli errori per JScript.

try {
   [tryStatements]
} catch(exception) {
   [catchStatements]
} finally {
   [finallyStatements]}

Argomenti

  • tryStatements
    Facoltativo. Istruzioni in cui può verificarsi un errore.

  • eccezione
    Obbligatoria. Qualsiasi nome di variabile. Il valore iniziale di exception corrisponde al valore dell'errore generato.

  • catchStatements
    Facoltativo. Istruzioni di gestione degli errori generati nel blocco tryStatements associato.

  • finallyStatements
    Facoltativo. Istruzioni che vengono eseguite in modo non condizionale al termine dell'elaborazione di tutti gli altri errori.

Note

L'istruzione try...catch...finally consente di gestire parte o tutti i possibili errori che potrebbero verificarsi in un blocco di codice specifico, senza interrompere l'esecuzione del programma. In caso si verifichino errori la cui gestione non è stata prevista dal programmatore, JScript fornisce all'utente il normale messaggio di errore, come se non vi fosse alcuna routine di gestione degli errori.

TryStatements contiene il codice in cui potrebbe verificarsi un errore, mentre catchStatements contiene il codice per la gestione di ogni errore che si verifica. In caso di errore in tryStatements, il controllo del programma viene passato a catchStatements per l'elaborazione. Il valore iniziale di exception è il valore dell'errore verificatosi in tryStatements. Se non si verifica alcun errore, catchStatements non verrà mai eseguito.

Se non è possibile gestire l'errore nelle catchStatements associate alle tryStatements in cui l'errore si è verificato, utilizzare l'istruzione throw per propagare o generare nuovamente l'errore tramite un gestore errori di livello superiore.

Una volta che tutte le istruzioni in tryStatements sono state eseguite e che gli eventuali errori sono stati gestiti in catchStatements, le istruzioni in finallyStatements verranno eseguite in modo non condizionale.

Si noti che il codice all'interno di finallyStatements viene eseguito anche se viene restituita un'istruzione all'interno del blocco try o catch o se il blocco catch genera un errore. L'esecuzione di tutti gli argomenti finallyStatements è garantita, a meno che non si verifichi un errore non gestito, ad esempio un errore di runtime all'interno del blocco catch.

Nota

Per evitare la potenziale ambiguità di questa situazione, non utilizzare un'istruzione return all'interno di un blocco finally. Il codice incluso in un blocco finally viene eseguito dopo che un'istruzione return viene rilevata in un blocco try o catch, ma prima della sua esecuzione. In questo caso, un'istruzione return all'interno del blocco finally viene eseguita prima (before) dell'istruzione return iniziale, restituendo un valore diverso.

Esempi

Oggetto di descrizione

Nell'esempio seguente viene generato un errore, quindi vengono visualizzati il messaggio, il codice e il nome dell'errore.

Codice

try
{
    var arr = new Array(-1);
}
catch(e)
{
    print ("Error Message: " + e.message);
    print ("Error Code: " + (e.number & 0xFFFF))
    print ("Error Name: " + e.name);
}

// Output:
//  Error Message: Array length must be zero or a positive integer
//  Error Code: 5029
//  Error Name: RangeError

Oggetto di descrizione

Nel seguente esempio viene illustrato il modo in cui funziona la gestione delle eccezioni in JScript.

Codice

try
    {
    print("Outer try is running");
 
    try
        {
        print("Nested try is running");
        throw new Error(301, "an error");
        }
    catch(e)
        {
        print("Nested catch caught " + e.message);
        throw e;
        }
    finally
        {
        print("Nested finally is running");
        }   
    }
catch(e)
    {
    print("Outer catch caught " + e.message);
    }
finally
    {
    print("Outer finally is running");
    }

// Output:
//  Outer try is running
//  Nested try is running
//  Nested catch caught an error
//  Nested finally is running
//  Outer catch caught an error
//  Outer finally is running

Requisiti

Versione 5

Vedere anche

Riferimenti

Istruzione throw

Oggetto Error