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:

javascriptnew Error('testo dell\'eccezione');

Poi questa eccezione deve essere lanciata con il comando throw:

javascriptthrow 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:

javascriptfunction 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:

javascriptfunction 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:

javascriptalert( 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:

javascripttry {
  alert( div(3, 0) );
} catch (error) {
  alert('stai tentando di dividere per 0, cosa vietata');
}
Задание 1

In JavaScript, il tentativo di calcolare la radice quadrata di un numero negativo non porta al lancio di un'eccezione:

javascriptlet 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.