Menu
Coddy logo textTech

İstisna Nedir?

Coddy'nin Ruby Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 43 / 56.

Çalışma zamanında bir şeyler ters gittiğinde; sıfıra bölme, "abc" ifadesini bir tam sayı olarak ayrıştırma veya nil üzerinde bir metot çağırma gibi durumlarda Ruby bir istisna fırlatır. Program durur ve Ruby nerede ne olduğunu yazdırır.

10 / 0
# ZeroDivisionError: 0 ile bölme

Her hata türü kendi sınıfıdır. Yaygın olanlardan birkaçı:

  • ZeroDivisionError: bir tam sayıyı sıfıra bölmek
  • ArgumentError: bir metoda yanlış argümanlar iletildi (Integer("abc"))
  • NoMethodError: alıcının sahip olmadığı bir metodu çağırmak (nil.upcase)
  • TypeError: yanlış türdeki bir nesne üzerinde işlem yapmak ("a" + 1)

Her istisna sınıfının bir .message özelliği vardır: bu, istisna işlenmediğinde Ruby'nin yazdırdığı, insan tarafından okunabilir açıklamadır. Sonraki dersler, programınızın çalışmaya devam etmesi için bu istisnaların nasıl yakalanacağını göstermektedir.

challenge icon

Görev

Başlangıç

Tek bir girdi satırı, yani tek bir Ruby ifadesi adı okuyun. Ruby'nin bunun için fırlatacağı istisna sınıfının adını yazdırın. Bir case ifadesi kullanın (gerçekten hata fırlatmanıza gerek yoktur):

  • divide-by-zeroZeroDivisionError
  • nil-methodNoMethodError
  • bad-integerArgumentError
  • wrong-typeTypeError
  • başka herhangi bir şey → Unknown

nil-method girdisi için çıktı NoMethodError olur.

Kopya kağıdı

Çalışma zamanında bir şeyler ters gittiğinde, Ruby bir istisna fırlatır (raises an exception) ve program durur. Yaygın istisna sınıfları:

  • ZeroDivisionError: bir tam sayıyı sıfıra bölmek
  • ArgumentError: yanlış argümanlar (örneğin Integer("abc"))
  • NoMethodError: alıcının sahip olmadığı bir metodu çağırmak (örneğin nil.upcase)
  • TypeError: yanlış türdeki nesne üzerinde işlem yapmak (örneğin "a" + 1)
10 / 0
# ZeroDivisionError: 0 ile bölündü

Her istisna nesnesi, insan tarafından okunabilir bir açıklama içeren bir .message metoduna sahiptir.

Kendin dene

kind = gets.chomp

# TODO: case kind ... eşleşen istisna sınıfı adını yazdırın
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık ve Akış bölümündeki tüm dersler