⊗jsSpExcThr 145 of 294 menu

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.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć