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 istisna sınıfı adlandırmazsan, tek başına kullanılan rescue, çoğu günlük hatayı, StandardError sınıfını ve onun alt sınıflarını yakalar. Yakalama, rescue bloğunda bir şey yapabildiğinde en kullanışlıdır: varsayılan bir değer kullanmak, sorunu günlüğe kaydetmek, kullanıcıya tekrar sormak.
Görev
KolayGirdiden 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 dizedeArgumentErrorhatası 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
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
1Dizeler Detaylı İnceleme
Dize Metotlarına Genel BakışDize EnterpolasyonuDizeler Üzerinde YinelemeBölme ve BirleştirmeTekrar - Dize Dokuyucu4Bloklar, Proc'lar ve Lambda'lar
Blok Nedir?do..end ve Süslü Parantezleryield Anahtar SözcüğüBlok ParametreleriProc'lar ve Lambda'larÖzet - Özel Yineleyici7Hash'ler 2. Bölüm
Varsayılanlarla Hash.newHash'ler Üzerinde Yinelemeİç İçe Hash'lerBirleştirme ve DönüştürmeTekrar - Frekans Sayacı10Proje - Öğrenci Kayıtları
Projeye Genel BakışÖğrenci Ekle5Enumerable Gücü
Seçme ve ReddetmeMap ZincirlemeReduce / Injectcount, all?, any?, none?group_by ve partitionsort_by, min_by, max_byTekrar - Veri Hattı32B Diziler
2B Dizi Temelleri2B Elemanlara Erişim2B Diziler Üzerinde YinelemeYaygın 2B ÖrüntülerTekrar - Matris İşlemleri6Proje - Kütüphane Yöneticisi
Projeye Genel BakışKitap Ekle9Hata Yönetimi
İstisna nedir?begin / rescueBirden Çok rescue Yan Yönergesiensure ve raiseTekrar - Güvenli Hesap MakinesiKendi başına pratik yap: Online Ruby derleyicisi