Ricerca…


introduzione

Impareremo come creare oggetti Error e come lanciare e gestire gli errori in Node.js

Modifiche future relative alle migliori pratiche nella gestione degli errori.

Creazione dell'oggetto Error

nuovo errore (messaggio)

Crea un nuovo oggetto errore, in cui il message del valore viene impostato sulla proprietà del message dell'oggetto creato. Di solito gli argomenti del message vengono passati al costruttore Error come stringa. Tuttavia, se l'argomento del message è oggetto non una stringa, il costruttore Error chiama il metodo .toString() dell'oggetto passato e lo imposta sulla proprietà message dell'oggetto error creato.

var err = new Error("The error message");
console.log(err.message); //prints: The error message
console.log(err);
//output
//Error: The error message
//    at ... 

Ogni oggetto di errore ha una traccia di stack. La traccia di stack contiene le informazioni del messaggio di errore e mostra dove si è verificato l'errore (l'output sopra mostra lo stack di errori). Una volta creato l'oggetto errore, il sistema acquisisce la traccia dello stack dell'errore sulla linea corrente. Per ottenere la traccia dello stack, utilizzare la proprietà stack di qualsiasi oggetto di errore creato. Sotto due righe sono identiche:

console.log(err);
console.log(err.stack);

Errore di lancio

Errore di lancio significa eccezione se nessuna eccezione viene gestita, quindi il server nodo si bloccherà.

La seguente riga genera un errore:

throw new Error("Some error occurred"); 

o

var err = new Error("Some error occurred");
throw err;

o

throw "Some error occurred";

L'ultimo esempio (tirare le stringhe) non è una buona pratica e non è raccomandato (genera sempre errori che sono istanze di oggetto Error).

Si noti che se si throw un errore nel proprio, allora il sistema si bloccherà su quella linea (se non ci sono gestori di eccezioni), nessun codice verrà eseguito dopo quella linea.

var a = 5;
var err = new Error("Some error message");
throw err; //this will print the error stack and node server will stop
a++; //this line will never be executed
console.log(a); //and this one also

Ma in questo esempio:

var a = 5;
var err = new Error("Some error message");
console.log(err); //this will print the error stack
a++; 
console.log(a); //this line will be executed and will print 6

prova ... cattura blocco

prova ... il blocco catch è per la gestione delle eccezioni, ricorda che l'eccezione indica l'errore generato non l'errore.

try {
    var a = 1;
    b++; //this will cause an error because be is undefined
    console.log(b); //this line will not be executed
} catch (error) {
    console.log(error); //here we handle the error caused in the try block
}

Nel blocco try b++ causano un errore e quell'errore è passato a catch block che può essere gestito lì o addirittura può essere generato lo stesso errore nel catch block o apportare modifiche di poco valore e quindi lanciare. Vediamo il prossimo esempio.

try {
    var a = 1;
    b++;
    console.log(b);
} catch (error) {
    error.message = "b variable is undefined, so the undefined can't be incremented"
    throw error;
}

Nell'esempio sopra abbiamo modificato la proprietà message dell'oggetto error e poi lanciato l' error modificato.

È possibile attraverso qualsiasi errore nel blocco try e gestirlo nel blocco catch:

try {
    var a = 1;
    throw new Error("Some error message");
    console.log(a); //this line will not be executed;
} catch (error) {
    console.log(error); //will be the above thrown error 
}


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow