Menu
Coddy logo textTech

begin / rescue

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

Bir istisnanın programınızı çökertmesini önlemek için, riskli kodu begin ... rescue ... end içine alın. begin içindeki herhangi bir şey bir hata fırlatırsa, Ruby durdurmak yerine eşleşen rescue bloğuna atlar.

begin
  result = 10 / 0
  puts result
rescue ZeroDivisionError
  puts "Cannot divide by zero!"
end
# Sıfıra bölünemez!

İstisna nesnesinin kendisini => e ile yakalayabilir ve .message özelliğini okuyabilirsiniz:

begin
  Integer("hello")
rescue ArgumentError => e
  puts "Bad input: #{e.message}"
end
# Kötü girdi: Integer() için geçersiz değer: "hello"

Bir özel durum sınıfı belirtmezseniz, tek başına rescue, StandardError ve onun türevlerini, yani çoğu günlük hatayı yakalar. Yakalama işlemi en çok, rescue bloğunda bir şey yapabildiğinizde yararlıdır: varsayılan bir değer atamak, sorunu kaydetmek, kullanıcıya tekrar sormak.

challenge icon

Görev

Kolay

Girdiden iki satır okuyun, her ikisi de tam sayı olmalıdır, ancak ikincisi geçerli bir sayı olmayabilir.

İkinci satırın ayrıştırılmasını begin / rescue içine alın:

  • Integer(input) kullanın (geçersiz bir dizede ArgumentError hatası fırlatır)
  • Ayrıştırma başarılı olursa, Sum: <a + b> yazdırın
  • Başarısız olursa, Bad number! yazdırın

3 ve ardından 4 girdisi için çıktı Sum: 7 olur. 3 ve ardından abc için ise Bad number! olur.

Kendin dene

a = gets.to_i
raw_b = gets.chomp

# TODO: Integer(raw_b) etrafında begin/rescue; toplamı veya talimatlardaki tam metni yazdır
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