カスタム例外クラスに関する多くの情報が見つからないようです。
私が知っていること
カスタム エラー クラスを宣言してから継承させることStandardError
ができるので、rescue
dにすることができます。
class MyCustomError < StandardError
end
これにより、次を使用してそれを上げることができます。
raise MyCustomError, "A message"
その後、レスキュー時にそのメッセージを取得します
rescue MyCustomError => e
puts e.message # => "A message"
わからないこと
例外にいくつかのカスタム フィールドを指定したいのですmessage
が、親クラスから属性を継承したいと考えています。このトピックを読んで@message
例外クラスのインスタンス変数ではないことがわかったので、継承がうまくいかないのではないかと心配しています。
誰でもこれについて詳しく教えてもらえますか?object
属性を持つカスタム エラー クラスを実装するにはどうすればよいですか? 次は正しいですか。
class MyCustomError < StandardError
attr_reader :object
def initialize(message, object)
super(message)
@object = object
end
end
その後:
raise MyCustomError.new(anObject), "A message"
取得するため:
rescue MyCustomError => e
puts e.message # => "A message"
puts e.object # => anObject
それは機能しますか?もしそうなら、これは物事を行う正しい方法ですか?