Gli ultimi tutorial di sviluppo web
 

JavaScript Errori - tiro e cercare di catturare


La try dichiarazione consente di verificare un blocco di codice per gli errori.

La catch dichiarazione consente di gestire l'errore.

Il throw dichiarazione consente di creare errori personalizzati.

L'istruzione finally permette di eseguire il codice, dopo try e catch, indipendentemente dal risultato.


Gli errori che accadrà!

Durante l'esecuzione di codice JavaScript, possono verificarsi diversi errori.

Gli errori possono essere errori di codifica da parte del programmatore, errori dovuti a ingresso sbagliato, e altre cose imprevedibili:

Esempio

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
try {
    adddlert("Welcome guest!");
}
catch(err) {
    document.getElementById("demo").innerHTML = err.message;
}
</script>

</body>
</html>
Prova tu stesso "

Nell'esempio precedente abbiamo fatto un errore di battitura nel codice (nel blocco try).

Il catch di blocco cattura l'errore, ed esegue il codice per gestire la cosa.


JavaScript try e catch

La try dichiarazione consente di definire un blocco di codice da testare per errori mentre è in esecuzione.

La catch dichiarazione consente di definire un blocco di codice da eseguire, se si verifica un errore nel blocco try.

Le istruzioni JavaScript try e catch sono a coppie:

try {
    Block of code to try
}
catch(err) {
    Block of code to handle errors
}

JavaScript può generare errori

Quando si verifica un errore, JavaScript normalmente fermarsi, e genera un messaggio di errore.

Il termine tecnico per questo è: alzerà JavaScript (o lanciare) un'eccezione.


Il throw Statement

Il throw dichiarazione consente di creare un errore personalizzato.

Tecnicamente è possibile aumentare (gettare) un'eccezione.

L'eccezione può essere una stringa JavaScript, un numero, un valore booleano o di un oggetto:

throw "Too big";    // throw a text
throw 500;          // throw a number

Se si usa throw insieme a try e catch , è possibile controllare il flusso del programma e generare messaggi di errore personalizzati.


Input Validation Esempio

Questo esempio esamina ingresso. Se il valore è sbagliato, viene generata un'eccezione (ERR).

L'eccezione (ERR) è catturato da l'istruzione catch e viene visualizzato un messaggio di errore personalizzato:

<!DOCTYPE html>
<html>
<body>

<p>Please input a number between 5 and 10:</p>

<input id="demo" type="text">
<button type="button" onclick="myFunction()">Test Input</button>
<p id="message"></p>

<script>
function myFunction() {
    var message, x;
    message = document.getElementById("message");
    message.innerHTML = "";
    x = document.getElementById("demo").value;
    try {
        if(x == "") throw "empty";
        if(isNaN(x)) throw "not a number";
        x = Number(x);
        if(x < 5) throw "too low";
        if(x > 10) throw "too high";
    }
    catch(err) {
        message.innerHTML = "Input is " + err;
    }
}
</script>

</body>
</html>
Prova tu stesso "

Validazione HTML

Il codice di cui sopra è solo un esempio.

I browser moderni useranno spesso una combinazione di JavaScript e built-in di validazione HTML, utilizzando regole di convalida predefinite definite in HTML attributi:

<input id="demo" type="number" min="5" max="10" step="1"

Si può leggere di più sulla convalida forme in un capitolo successivo di questo tutorial.


Il finally Statement

Il finally dichiarazione permette di eseguire il codice, dopo try e catch , a prescindere dal risultato:

try {
    Block of code to try
}
catch(err) {
    Block of code to handle errors
}
finally {
    Block of code to be executed regardless of the try / catch result
}

Esempio

function myFunction() {
    var message, x;
    message = document.getElementById("message");
    message.innerHTML = "";
    x = document.getElementById("demo").value;
    try {
        if(x == "") throw "is empty";
        if(isNaN(x)) throw "is not a number";
        x = Number(x);
        if(x > 10) throw "is too high";
        if(x < 5) throw "is too low";
    }
    catch(err) {
        message.innerHTML = "Error: " + err + ".";
    }
    finally {
        document.getElementById("demo").value = "";
    }
}
Prova tu stesso "