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:

javascriptnew Error('tekst wyjątku');

Następnie ten wyjątek należy rzucić za pomocą polecenia throw:

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

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

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

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

javascripttry {
  alert( div(3, 0) );
} catch (error) {
  alert('próbujesz dzielić przez 0, co jest zabronione');
}
Задание 1

W JavaScript próba pierwiastkowania liczby ujemnej nie powoduje rzucenia wyjątku:

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