Rzucanie wyjątków w JavaScript
W poprzednich lekcjach poznaliśmy dwa miejsca, w których JavaScript rzuca wyjątek w przypadku jakichś problemów.
W twoim projekcie mogą jednak występować inne sytuacje, które dla ciebie są wyjątkowe, a dla JavaScript - nie. W takim przypadku możesz tworzyć i rzucać własne, niestandardowe wyjątki.
Przeanalizujmy składnię niezbędną do
tego. Na początek należy utworzyć wyjątek
za pomocą polecenia new Error, przekazując jako parametr
tekst wyjątku:
new Error('tekst wyjątku');
Następnie ten wyjątek należy rzucić za pomocą
polecenia throw:
throw new Error('tekst wyjątku');
Rzucenie wyjątku powoduje, że JavaScript
uznaje, że zaistniała sytuacja wyjątkowa.
Oznacza to, że taki wyjątek można przechwycić
za pomocą konstrukcji try-catch i
obsłużyć w odpowiedni sposób.
Spójrzmy na przykład, jak z tego korzystać. Załóżmy, że mamy funkcję, która dzieli jedną liczbę przez drugą:
function div(a, b) {
return a / b;
}
Załóżmy, że dzielenie przez zero
jest zabronione i przy próbie zrobienia tego powinna
wystąpić sytuacja wyjątkowa. W tym celu
będziemy sprawdzać w funkcji, czy nie ma próby
dzielenia przez 0. Jeśli nie - będziemy dzielić,
a jeśli tak - będziemy rzucać wyjątek:
function div(a, b) {
if (b !== 0) {
return a / b;
} else {
throw new Error('błąd dzielenia przez zero');
}
}
Na początek po prostu spróbujmy podzielić
przez 0, nie przechwytując wyjątku:
alert( div(3, 0) );
W tym przypadku wykonanie skryptu zostanie przerwane
i w konsoli pojawi się błąd z tekstem 'błąd
dzielenia przez zero' (sprawdź). Teraz
przechwytujmy nasz błąd i
jakoś go obsłużmy:
try {
alert( div(3, 0) );
} catch (error) {
alert('próbujesz dzielić przez 0, co jest zabronione');
}
W JavaScript próba pierwiastkowania liczby ujemnej nie powoduje rzucenia wyjątku:
let result = Math.sqrt(-1);
console.log(result); // wyświetli NaN
Napisz własną funkcję, która będzie pierwiastkować liczbę i przy tym rzucać wyjątek, jeśli pierwiastkowana jest liczba ujemna.