【Ruby】カスタム例外にメッセージ以外のパラメータを追加する

こんにちは、技術部のNです。
独自で作成したカスタム例外に、メッセージ以外のデータを渡したいとき、Rubyでは以下の記載でパラメータを追加することができます。

前提

カスタム例外がこのようにあり、メッセージが設定されていたとします。

				
					class CustomError < StandardError
  def initialize(message="default message")
    super
  end
end
				
			
Rubyの例外オブジェクトは messageの属性を持っており、引数なしでraiseすればデフォルトで設定したメッセージが吐かれ、第一引数に値を渡すことで独自のメッセージを表示することができます。
				
					raise CustomError #=> default message
raise CustomError, "custom message" #=> custom message
				
			

独自のデータを追加する

ここにcodeという値を持たせたいとします。下記のように追記すると、message、codeを渡すことができます。

				
					class CustomError < StandardError
  attr_reader :code
  def initialize(message="default message", code=”DEFAULT_CODE”)
    @code = code
    super(message)
  end
end

begin
  raise CustomError.new("my message", "MY_CODE")  # raise CustomError, "my message", "MY_CODE" ではcodeは渡せない
rescue => e
  puts e.message #=> my message
  puts e.code #=> "MY_CODE"  #このようにeから取得することができる
end
				
			

以上です。最後までお読みいただきありがとうございました。

参考
https://www.honeybadger.io/blog/ruby-custom-exceptions/

スーパーソフトウエアの採用情報

あなたが活躍できるフィールドと充実した育成環境があります

blank
blank