Lancio di eccezioni in JavaScript
Nelle lezioni precedenti abbiamo studiato due luoghi in cui JavaScript lancia un'eccezione in caso di problemi.
Nel tuo progetto, tuttavia, potrebbero esserci altre situazioni che per te sono eccezionali, ma per JavaScript no. In tal caso puoi creare e lanciare le tue eccezioni personalizzate.
Analizziamo la sintassi necessaria per
farlo. Per prima cosa, è necessario creare l'eccezione
usando il comando new Error, passando come parametro
il testo dell'eccezione:
new Error('testo dell\'eccezione');
Poi questa eccezione deve essere lanciata con il comando
throw:
throw new Error('testo dell\'eccezione');
Il lancio di un'eccezione fa sì che JavaScript
consideri che si sia verificata una situazione eccezionale.
Ciò significa che tale eccezione può essere catturata
usando la struttura try-catch e
gestita nel modo desiderato.
Vediamo con un esempio come usarlo. Supponiamo di avere una funzione che divide un numero per un altro:
function div(a, b) {
return a / b;
}
Consideriamo che la divisione per zero
sia vietata e che tentando di farlo debba
verificarsi una situazione eccezionale. Per fare ciò
controlleremo nella funzione se non ci sia un tentativo
di divisione per 0. Se non c'è - divideremo,
altrimenti - lanceremo un'eccezione:
function div(a, b) {
if (b !== 0) {
return a / b;
} else {
throw new Error('errore di divisione per zero');
}
}
Per cominciare, proviamo semplicemente a dividere
per 0, senza catturare l'eccezione:
alert( div(3, 0) );
In questo caso l'esecuzione dello script si interromperà
e nella console apparirà un errore con il testo 'errore
di divisione per zero' (verificalo). Ora
catturiamo il nostro errore e
gestiamolo in qualche modo:
try {
alert( div(3, 0) );
} catch (error) {
alert('stai tentando di dividere per 0, cosa vietata');
}
In JavaScript, il tentativo di calcolare la radice quadrata di un numero negativo non porta al lancio di un'eccezione:
let result = Math.sqrt(-1);
console.log(result); // visualizzerà NaN
Scrivi la tua funzione che calcolerà la radice quadrata di un numero e allo stesso tempo lancerà un'eccezione se la radice viene calcolata da un numero negativo.