Birden Çok rescue Yan Yönergesi
Coddy'nin Ruby Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 45 / 56.
Bir begin bloğunda birkaç rescue yan tümcesi olabilir. Ruby bunları yukarıdan aşağıya kontrol eder ve istisna sınıfıyla eşleşen ilkini çalıştırır.
begin
number = Integer(gets.chomp)
result = 100 / number
puts result
rescue ArgumentError
puts "That's not a valid number."
rescue ZeroDivisionError
puts "Can't divide by zero."
endSıra önemlidir: özel sınıfları genel olanlardan önce listeleyin. İlk sıraya yerleştirilen StandardError her şeyi yakalayacağından sonraki dallar hiçbir zaman çalışmaz.
Bir dalda birden fazla istisna sınıfını virgüllerle listeleyerek de yakalayabilirsiniz:
begin
risky_call
rescue ArgumentError, TypeError => e
puts "Bad input: #{e.message}"
endKurtarma kodu birden fazla hata durumu için aynı olduğunda bunu kullanın.
Görev
KolayGirdiden iki satır okuyun; her ikisinin de tamsayı olması amaçlanmıştır. Her ikisi için Integer(...) kullanın, ardından birinciyi ikinciye bölün.
Üç durumu ayrı rescue dallarıyla ele alın:
ArgumentError→Bad number!yazdırınZeroDivisionError→Cannot divide by zero!yazdırınTypeError→Wrong type!yazdırın
Her şey yolunda giderse Result: <a / b> yazdırın (tamsayı bölmesi).
10 / 2 girdisi için çıktı Result: 5 olur. 10 / 0 için Cannot divide by zero!. 10 / abc için Bad number!.
Kendin dene
raw_a = gets.chomp
raw_b = gets.chomp
# TODO: begin ... rescue ArgumentError ... rescue ZeroDivisionError ... rescue TypeError ... end
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