English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Durante l'esecuzione del codice JavaScript, possono verificarsi errori imprevisti.
Gli errori possono essere errori di codifica scritti dal programmatore, errori causati da input errati e altri eventi imprevisti.
Quindi, per gestire gli errori, JavaScript fornisce 4 parole chiave:
L'espressione try ti permette di testare se un blocco di codice contiene errori.
La frase catch ti permette di gestire gli errori.
La frase throw ti permette di creare errori personalizzati.
La frase finally ti permette di eseguire codice dopo un tentativo e un'intercettazione, indipendentemente dal risultato.
In questo esempio, abbiamo scritto "alert" come "aaalert" per produrre deliberatamente un errore:
try { aaalert("Hello world"); } catch(e) { document.getElementById("result").innerHTML = e.name + "<br>" + e.message; }Prova a vedere‹/›
Quando si verifica un errore, JavaScript di solito si ferma e crea un oggetto con due proprietà:Oggetto Error:name e message.
L'espressione try ti permette di definire un blocco di codice che verrà testato per errori durante l'esecuzione.
Se un errore si verifica all'interno del blocco try, questa espressione ti permette di definire un blocco di codice da eseguire.
Le espressioni JavaScript try e catch si presentano in coppia:
try { //try_statements-尝试尝试的语句 catch(err){ //catch_statements-处理错误的语句 }
La frase throw lancia un'eccezione definita dall'utente.
La frase throw permette di creare errori personalizzati. Tecnicamente, questo si chiama "Lanciare un'eccezione
Un'eccezione può essere una stringa JavaScript, un numero, un valore booleano o un oggetto:
throw "Invalid"; // Genera un'eccezione con valore stringa throw 32; // Genera un'eccezione con valore 32 throw true; // Genera un'eccezione con valore true
Se si utilizza throw insieme a try e catch, è possibile specificare il flusso del programma e generare messaggi di errore personalizzati.
In questo esempio, se viene passato qualsiasi parametro non numerico, getRectArea() lancerà un errore personalizzato:
function getRectArea(width, height) { if (isNaN(width) || isNaN(height)) { throw "Il parametro non è un numero!"; } } try { getRectArea(5, 'Z'); } catch(err) { document.getElementById('para').innerHTML = err; }Prova a vedere‹/›
In questo esempio, se il valore è errato, viene lanciata un'eccezione (err). La frase catch cattura l'eccezione (err) e visualizza un messaggio di errore personalizzato:
var x = document.querySelector("input").value; try { if(x == "") throw "vuoto"; if(isNaN(x)) throw "Non un numero"; if(x > 10) throw "troppo alto"; if(x < 5) throw "troppo basso"; } catch(err) { document.getElementById("para").innerHTML = "Input " + err; }Prova a vedere‹/›
La frase finally ti permette di eseguire codice dopo il try e indipendentemente dal risultato del catch.
try { aaalert("Hello world"); } catch(err) { document.getElementById("result").innerHTML = err; } finally { document.getElementById("result").innerHTML += "<h3>Infine eseguito lo statement</h3>"; }Prova a vedere‹/›
Le istruzioni catch e finally sono opzionali, ma è necessario utilizzare una di esse (o entrambe), utilizzando la struttura try:
try { aaalert("Hello world"); } finally { document.getElementById("result").innerHTML = "Finally statement executed"; }Prova a vedere‹/›
JavaScript ha un oggetto Error integrato che fornisce informazioni di errore quando si verifica un errore.
L'oggetto Error fornisce due proprietà utili: name e message.
La tabella seguente elenca le proprietà dell'oggetto Error:
proprietà | descrizione |
---|---|
name | impostare o restituire il nome dell'errore |
message | impostare o restituire il messaggio di errore |
l'attributo error name può restituire sette valori diversi:
tipo | descrizione |
---|---|
EvalError | indica un errore riguardante la funzione globale eval() |
InternalError | indica un errore che si verifica quando si lancia un errore interno dell'engine JavaScript |
RangeError | indica un errore che si verifica quando un numero variabile o un parametro è al di fuori dell'intervallo di valori validi |
ReferenceError | indica un errore che si verifica quando si annulla una riferimento non valido |
SyntaxError | indica un errore di sintassi che si verifica durante la解析 del codice in eval() |
TypeError | indica un errore che si verifica quando una variabile o un parametro non è di un tipo valido |
URIError | indica un errore che si verifica quando si passano parametri non validi a encodeURI() o decodeURI() |
La prossima sezione illustrerà in dettaglio ogni tipo di errore.
Quando si passaeval()Quando si verifica un errore durante l'esecuzione di una funzione, viene lanciato un EvalError.
Tuttavia, JavaScript non lancia più questo errore, ma lo mantiene per la compatibilità retroattiva.
Le versioni più recenti di JavaScript non lanciano eccezioni EvalError. Utilizza SyntaxError al loro posto.
Quando si utilizza un numero al di fuori dell'intervallo di valori permessi, viene sollevato un RangeError.
Ad esempio, creare un array di lunghezza negativa lancia un RangeError:
try { var arr = new Array(-1); // lancia un errore di intervallo } document.getElementById("result").innerHTML = err.name + "<br>" + err.message; }Prova a vedere‹/›
Quando si tenta di accedere a una variabile o un oggetto non esistente, viene solitamente lanciato un ReferenceError.
try { var x = 5 + y; // lanciare un errore di riferimento } document.getElementById("result").innerHTML = err.name + "<br>" + err.message; }Prova a vedere‹/›
Se c'è un problema di sintassi nel suo codice JavaScript, viene sollevato un SyntaxError durante l'esecuzione.
try { eval("alert('Hello)"); // La mancanza di ' solleva un errore } document.getElementById("result").innerHTML = err.name + "<br>" + err.message; }Prova a vedere‹/›
Quando il valore non è del tipo atteso, viene sollevato un TypeError.
var num = 50; try { num.toUpperCase(); // Non è possibile convertire un numero in maiuscolo } document.getElementById("result").innerHTML = err.name + "<br>" + err.message; }Prova a vedere‹/›
Quando si specifica un URI (Identificatore di risorsa universale) non valido, viene sollevato un URIError.
try { decodeURI("%%"); // Non è possibile decodificare il segno di percentuale URI } document.getElementById("result").innerHTML = err.name + "<br>" + err.message; }Prova a vedere‹/›
Per una riferimento completo delle proprietà e dei metodi, visitate il nostroRiferimento agli errori JavaScript.
La parte di riferimento contiene descrizioni e esempi di tutte le proprietà e i tipi di Error.