[Ruby] 自前の例外クラスで StandardError を継承する

memo.

module Backlog
  module API
    class ArgumentError < StandardError ; end

調査

moduleの名前空間の階層に合わせてStandardErrorを継承する

自前で例外クラスを定義するとき、どういう風に階層化するのかという疑問もあり得る。Rubyじゃないけど、例えばこのC++のコーディングガイドには、注意深く例外クラスの階層を設計したところで利用者は誰も気にしないんだから時間の無駄だと書いてある。1つのライブラリもしくは名前空間に付いて1つの例外を定義すれば十分だ、と。Rubyでもmoduleの名前空間の階層に合わせてStandardErrorを継承することが多いようだ

例外クラス名そのものでエラーの原因を示す

例外オブジェクトに自前メッセージや自前スタックトレースを付け加えることもできるけど、例外クラス名そのものがズバリのエラーの原因を示している、という例も多い。というか、それが多数派。

RSpec の例
RSpec::Configuration::MustBeConfiguredBeforeExampleGroupsError < StandardError

class Configuration
  include RSpec::Core::Hooks
  class MustBeConfiguredBeforeExampleGroupsError < StandardError; end

補遺