【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/
関連記事
- 2022-10-11
- テクノロジー