Rubyのカスタム例外
Rubyで独自の例外を作成するのは簡単です。次の手順に従ってください:
1。新しいクラスを作成する
例外は、Rubyの他のすべてと同じように、クラスです。新しい種類の例外を作成するには、StandardErrorまたはその子の1つから継承するクラスを作成するだけです。
class MyError < StandardError
end
raise MyError
慣例により、新しい例外のクラス名は「エラー」で終わります。カスタム例外をモジュール内に配置することもお勧めします。つまり、最終的なエラークラスは次のようになります:ActiveRecord::RecordNotFound
およびNet::HTTP::ConnectionError
。
2。メッセージを追加する
すべてのRuby例外オブジェクトにはメッセージ属性があります。例外名の横に印刷されるのは、長いテキストです
例外のメッセージ属性の例
次のように、例外を発生させたときにメッセージを指定できます。
raise MyError, "My message"
また、独自のコンストラクターを追加することで、カスタムエラークラスにデフォルトのメッセージを追加できます。
class MyError < StandardError
def initialize(msg="My default message")
super
end
end
3。例外にカスタムデータ属性を追加する
他のクラスで行うのと同じように、例外にカスタムデータを追加できます。クラスに属性リーダーを追加して、コンストラクターを更新しましょう。
class MyError < StandardError
attr_reader :thing
def initialize(msg="My default message", thing="apple")
@thing = thing
super(msg)
end
end
begin
raise MyError.new("my message", "my thing")
rescue => e
puts e.thing # "my thing"
end
それでおしまい! Rubyでカスタムエラーまたは例外を作成することは、実際にはそれほど難しくありません。注意すべきことが1つあります。例では、常にStandardErrorから継承していることに注意してください。それは意図的なものです。 RubyにはExceptionクラスがありますが、Rubyから直接継承しないでください。これについて詳しくは、ExceptionとStandardErrorの違いに関する記事をご覧ください
-
Rubyで例外にコンテキストデータを追加する方法
標準のバックトレース/エラーメッセージの組み合わせでは不十分な場合があります。エラーの原因を特定するために、追加のデータが必要になる場合があります。幸い、Rubyで行うのはとても簡単です。 エラーメッセージのカスタマイズ エラーにコンテキスト情報を追加する最も簡単な方法は、それを例外のメッセージに追加することです。以下の例では、例外をキャッチし、新しいメッセージで再発生させています: begin raise foo rescue => e raise e.class, bar end # RuntimeError: bar このアプローチの良い使用例は、テンプレートをレン
-
Rubyのデコレータデザインパターン
デコレータのデザインパターンは何ですか? そして、Rubyプロジェクトでこのパターンをどのように使用できますか? デコレータデザインパターンは、新機能を追加することでオブジェクトを強化するのに役立ちます クラスを変更せずにそれに。 例を見てみましょう! ロギングとパフォーマンス この例では、rest-clientのようなgemを使用してHTTPリクエストを作成しています。 次のようになります: require restclient data = RestClient.get(www.rubyguides.com) 今 : 一部のリクエストにログを追加したいが、RestCli