English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Corso di base JavaScript

Oggetti JavaScript

Funzioni JavaScript

DOM HTML JS

BOM del browser JS

Corso di base AJAX

Manuale di riferimento JavaScript

Gestione degli errori JavaScript

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.

Espressioni try ... catch JavaScript

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-处理错误的语句
}

Statement throw JavaScript

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‹/›

Esempio di validazione dell'input

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‹/›

Statement JavaScript finale

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‹/›

Oggetto errore JavaScript

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.

proprietà dell'oggetto errore

La tabella seguente elenca le proprietà dell'oggetto Error:

proprietàdescrizione
nameimpostare o restituire il nome dell'errore
messageimpostare o restituire il messaggio di errore

tipo di errore

l'attributo error name può restituire sette valori diversi:

tipodescrizione
EvalErrorindica un errore riguardante la funzione globale eval()
InternalErrorindica un errore che si verifica quando si lancia un errore interno dell'engine JavaScript
RangeErrorindica un errore che si verifica quando un numero variabile o un parametro è al di fuori dell'intervallo di valori validi
ReferenceErrorindica un errore che si verifica quando si annulla una riferimento non valido
SyntaxErrorindica un errore di sintassi che si verifica durante la解析 del codice in eval()
TypeErrorindica un errore che si verifica quando una variabile o un parametro non è di un tipo valido
URIErrorindica 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.

EvalError

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.

RangeError

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‹/›

ReferenceError

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‹/›

SyntaxError

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‹/›

TypeError

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‹/›

URIError

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‹/›

Riferimento completo degli errori

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.