Menu
Coddy logo textTech

Czym jest wyjątek?

Część sekcji Logika i przepływ programu ścieżki Ruby w Coddy. Lekcja 43 z 56.

Gdy coś pójdzie nie tak w czasie wykonywania programu, na przykład przy dzieleniu przez zero, parsowaniu "abc" jako liczby całkowitej lub wywołaniu metody na nil, Ruby zgłasza wyjątek. Program zatrzymuje się, a Ruby wyświetla, co się stało i gdzie do tego doszło.

10 / 0
# ZeroDivisionError: dzielenie przez 0

Każdy rodzaj błędu ma własną klasę. Oto kilka typowych:

  • ZeroDivisionError: dzielenie liczby całkowitej przez zero
  • ArgumentError: nieprawidłowe argumenty przekazane do metody (Integer("abc"))
  • NoMethodError: wywołanie metody, której odbiorca nie ma (nil.upcase)
  • TypeError: operacja na obiekcie niewłaściwego typu ("a" + 1)

Każda klasa wyjątku ma .message: czytelny dla człowieka opis, który Ruby wyświetla, gdy wyjątek nie zostanie obsłużony. W kolejnych lekcjach pokażemy, jak przechwytywać te wyjątki, aby program działał dalej.

challenge icon

Wyzwanie

Początkujący

Wczytaj jeden wiersz danych wejściowych — nazwę jednego wyrażenia w Ruby. Wypisz nazwę klasy wyjątku, który Ruby zgłosiłby dla tego wyrażenia. Użyj instrukcji case (nie musisz faktycznie zgłaszać wyjątku):

  • divide-by-zero → ZeroDivisionError
  • nil-method → NoMethodError
  • bad-integer → ArgumentError
  • wrong-type → TypeError
  • cokolwiek innego → Unknown

Dla danych wejściowych nil-method wynikiem jest NoMethodError.

Spróbuj swoich sił

kind = gets.chomp

# TODO: case kind ... wypisz nazwę odpowiedniej klasy wyjątku
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator Ruby online