Kurs obiektowego JavaScript (21)

Autor: Damian Chodorek • Opublikowany: 9 października 2014 • Ostatnia aktualizacja: 8 lutego 2015 • Kategoria: javascript, kursy

Mechanizm obsługi błędów.

JS dostarcza mechanizm obsługi błędów znany z innych języków programowania. Związane są z nim cztery słówka kluczowe:

  • try – definiuje blok kodu, który może powodować potencjalne błędy, czyli z którego mogą być rzucane wyjątki,
  • catch – blok obsługi rzuconych wyjątków,
  • finally – blok, który jest wykonywany zawsze, niezależnie czy nastąpił wyjątek czy nie,
  • throw – rzuca wyjątek.

Poniżej lista wbudowanych konstruktorów, które reprezentują grupy podobnych błędów.

  • EvalError,
  • RangeError,
  • ReferenceError,
  • SyntaxError,
  • TypeError,
  • URIError,
  • Error – po nim dziedziczą pozostałe.

Poniżej użycie funkcji, która nie istnieje. Oczywiście spowoduje to wystąpienie sytuacji wyjątkowej i rzucenie odpowiedniego wyjątku.

funkcja(); //ReferenceError: funkcja is not defined

Pojawił się ReferenceError. Dzięki wykorzystaniu bloku catch mamy kontrolę nad tym co się stanie w momencie wystąpienia błędu.

try{
  funkcja();  //nie istnieje więc wyrzucony zostanie ReferenceError
}catch(e){
  console.log("wystąpił błąd, ale nic z tym nie robimy");
}

Zauważ, że po wykonaniu powyższego kodu w konsoli nie pojawi się błąd, a jedynie efekt jego obsługi. Gdyby zamiast funkcji funkcja() wywołać taką, która istnieje, wówczas wszystko co jest w bloku catch nie zostałoby wykonane.

Czym jest parametr e zdefiniowany przy bloku catch? Jest to wyrzucony z bloku try obiekt błędu. Posiada on różne metody i pola, które niestety nie są jednakowo implementowane w przeglądarkach. Wyjątkiem są pola: message oraz name.

try{
  funkcja();  //nie istnieje więc wyrzucony zostanie ReferenceError
}catch(e){
  console.log("wystąpił błąd: "+e.name+"\no treści: "+e.message);
}finally{
  console.log("\nten blok wykona się niezależnie od zaistnienia błędu");
}

Możesz tworzyć swoje własne obiekty błędów używając zarówno konstruktorów wbudowanych jak również własnych. Aby rzucić wyjątek, należy skorzystać ze słowa throw oraz new. Przykład poniżej.

try{
  var wartosc=0;
  if(wartosc==0)  throw new Error("Dzielenie przez zero!");
  else console.log(50/wartosc);
}catch(e){
  console.log(e.name+"\n"+e.message);
}finally{
  console.log("finally się zawsze wykona")
}

Możesz także rzucić wyjątek bez jawnego użycia konstruktora.

throw {
  name: "Mój błąd",
  message: "Wystąpił błąd!"
}

W tym artykule to wszystko. Przejdź do następnej części:

Kurs obiektowego JavaScript (22)

Zobacz również
Kurs obiektowego JavaScript (19)Dokładne omówienie wyrażeń regularnych.
Kurs obiektowego JavaScript (20)Dokładne omówienie wyrażeń regularnych.
Kurs obiektowego JavaScript (22)Model programowania oparty o prototyp.
Kurs obiektowego JavaScript (23)Wyliczeniowe pola obiektów.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.