[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