SORU
19 NİSAN 2013, Cuma


Ruby özel hata sınıfları: mesaj devralma özniteliği

Özel istisna sınıfları hakkında daha fazla bilgi bulmak için görünmüyor olabilir.

Ben ne yapardım bilemiyorum

Özel hata sınıf bildirmek ve rescue d olabilir StandardErrordan miras bırakabilirsiniz:

class MyCustomError < StandardError
end

Bu basit olarak verir:

raise MyCustomError, "A message"

ve daha sonra, kurtarmaya çalışırken bu mesajı alıyorum

rescue MyCustomError => e
  puts e.message # => "A message"

Bilmiyorum ne olduğunu

Benim durum biraz özel alan vermek istiyorum, ancak üst sınıf message öznitelik devralmak istiyorum. @message örnek Özel Sınıf değişken olmayan on this topic okurken buldum, benim miras işe yaramaz diye korkuyorum.

Kimse bana bundan daha ayrıntı verebilir misiniz? Nasıl object bir öznitelik ile özel bir hata sınıfı uygulamak istiyorsunuz? Aşağıdaki doğru:

class MyCustomError < StandardError
  attr_reader :object
  def initialize(message, object)
    super(message)
    @object = object
  end
end

Ve sonra:

raise MyCustomError.new(anObject), "A message"

almak için:

rescue MyCustomError => e
  puts e.message # => "A message"
  puts e.object # => anObject

işe yarar mı, ve eğer varsa, bu şeyler yapmanın doğru yolu nedir?

CEVAP
19 NİSAN 2013, Cuma


raise zaten kurucusuna geçmek zorunda kalmazsınız mesaj ayarlar:

class MyCustomError < StandardError
  attr_reader :object

  def initialize(object)
    @object = object
  end
end

begin
  raise MyCustomError.new("an object"), "a message"
rescue MyCustomError => e
  puts e.message # => "a message"
  puts e.object # => "an object"
end

rescue MyCustomError ile rescue Exception Why is it bad style to `rescue Exception => e` in Ruby? bakın değiştirdim.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • rekjavicxxx

    rekjavicxxx

    28 EKİM 2007
  • tatermoog

    tatermoog

    2 AĞUSTOS 2006
  • UKF Dubstep

    UKF Dubstep

    29 NİSAN 2009