Ruby
 Computer >> コンピューター >  >> プログラミング >> Ruby

Rubyのカスタム例外

Rubyで独自の例外を作成するのは簡単です。次の手順に従ってください:

1。新しいクラスを作成する

例外は、Rubyの他のすべてと同じように、クラスです。新しい種類の例外を作成するには、StandardErrorまたはその子の1つから継承するクラスを作成するだけです。

class MyError < StandardError
end

raise MyError

慣例により、新しい例外のクラス名は「エラー」で終わります。カスタム例外をモジュール内に配置することもお勧めします。つまり、最終的なエラークラスは次のようになります:ActiveRecord::RecordNotFound およびNet::HTTP::ConnectionError

2。メッセージを追加する

すべてのRuby例外オブジェクトにはメッセージ属性があります。例外名の横に印刷されるのは、長いテキストです

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の違いに関する記事をご覧ください


  1. Rubyで例外にコンテキストデータを追加する方法

    標準のバックトレース/エラーメッセージの組み合わせでは不十分な場合があります。エラーの原因を特定するために、追加のデータが必要になる場合があります。幸い、Rubyで行うのはとても簡単です。 エラーメッセージのカスタマイズ エラーにコンテキスト情報を追加する最も簡単な方法は、それを例外のメッセージに追加することです。以下の例では、例外をキャッチし、新しいメッセージで再発生させています: begin raise foo rescue => e raise e.class, bar end # RuntimeError: bar このアプローチの良い使用例は、テンプレートをレン

  2. Rubyのデコレータデザインパターン

    デコレータのデザインパターンは何ですか? そして、Rubyプロジェクトでこのパターンをどのように使用できますか? デコレータデザインパターンは、新機能を追加することでオブジェクトを強化するのに役立ちます クラスを変更せずにそれに。 例を見てみましょう! ロギングとパフォーマンス この例では、rest-clientのようなgemを使用してHTTPリクエストを作成しています。 次のようになります: require restclient data = RestClient.get(www.rubyguides.com) 今 : 一部のリクエストにログを追加したいが、RestCli