Ruby'yi öğreniyorum ve failanahtar kelimeyle karşılaştım . Bunun anlamı ne?
if password.length < 8
fail "Password too short"
end
unless username
fail "No user name set"
end
Ruby'yi öğreniyorum ve failanahtar kelimeyle karşılaştım . Bunun anlamı ne?
if password.length < 8
fail "Password too short"
end
unless username
fail "No user name set"
end
fail "Password too short" if password.length < 8vefail "No user name set" unless username
Yanıtlar:
Ruby'de, failile eşanlamlıdır raise. failAnahtar için bir yöntemdir Kernelsınıf tarafından dahildir modülü Object. failYöntem tıpkı bir çalışma zamanı hatası yükseltir raiseanahtar kelime.
failYöntem, üç aşırı yükleme var
fail: RuntimeErrorhata mesajı olmadan bir yükseltir .
fail(string): RuntimeErrorbir hata mesajı olarak dize bağımsız değişkeniyle a yükseltir :
fail "Failed to open file"
fail(exception [, string [, array]]): exceptionisteğe bağlı bir hata mesajı (ikinci bağımsız değişken) ve geri arama bilgisi (üçüncü bağımsız değişken) ile bir sınıf istisnası (birinci bağımsız değişken) oluşturur.
Örnek: Kötü bir bağımsız değişken verildiğinde başarısız olması gereken bir işlev tanımladığınızı varsayın. A ArgumentErrordeğil , yükseltmek daha iyidir RuntimeError:
fail ArgumentError, "Illegal String"
Başka Örnek: Sen bütün geçebilir geri izleme için failiçeride iz erişebilmek yöntemle rescuebloğu:
fail ArgumentError, "Illegal String", caller
callergeri izlemeyi formdaki dizeler dizisi olarak döndüren bir Kernel yöntemidir file:line: in 'method'.
Bağımsız değişken olmadan, istisnayı $! veya $! ise bir RuntimeError yükseltir. sıfırdır. Tek bir String bağımsız değişkeni ile, dizeyi ileti olarak içeren bir RuntimeError hatası oluşturur. Aksi takdirde, ilk parametre bir Exception sınıfının (veya bir istisna mesajı gönderildiğinde bir Exception nesnesi döndüren bir nesnenin) adı olmalıdır. İsteğe bağlı ikinci parametre, istisna ile ilişkili mesajı ayarlar ve üçüncü parametre, bir geri arama bilgileri dizisidir. İstisnalar, start ... end bloklarının kurtarma cümlesine bağlıdır.
Kaynak: Çekirdek Modülündeki Ruby Belgeleri .
raise
Rubocop , her iki kelimenin kullanımından bahsediyor ;
failBunun yerine kullanınraiseİstisnaları belirtmek için .'' İstisnaları yeniden atmak
raiseyerine kullanınfail.'
İşte bir örnek.
def sample
fail 'something wrong' unless success?
rescue => e
logger.error e
raise
end
fail == raise
Başka bir deyişle, hata artırma yöntemi failiçin popüler bir takma raiseaddır. Kullanım:
fail ArgumentError, "Don't argue with me!"
www.ruby-doc.org arkadaşınızdır. Google'da rubydoc fail" Kernel " yazdığımda ilk isabet oldu. Tavsiyem, şüphe duyduğunuzda, bunun gibi tanımlayıcı şeyler için kesin kaynağa gitmenizdir.
raiseistisnaları elefailalırken ve kullanmadığında kullandıklarını bilmeye değer .