[Ruby] 自前の例外クラスで StandardError を継承する
memo.
[markdown]
> * [backlog-api/lib/backlog/api.rb at master · yoppi/backlog-api](https://github.com/yoppi/backlog-api/blob/master/lib/backlog/api.rb)
“`ruby
module Backlog
module API
class ArgumentError < StandardError ; end
``` ## 調査 > * [Rubyで自前の例外クラスを作るときExceptionではなくStandardErrorを継承する理由 – yarbの日記](http://d.hatena.ne.jp/yarb/20121005/p1)
moduleの名前空間の階層に合わせてStandardErrorを継承する
> 自前で例外クラスを定義するとき、どういう風に階層化するのかという疑問もあり得る。Rubyじゃないけど、例えばこのC++のコーディングガイドには、注意深く例外クラスの階層を設計したところで利用者は誰も気にしないんだから時間の無駄だと書いてある。1つのライブラリもしくは名前空間に付いて1つの例外を定義すれば十分だ、と。Rubyでもmoduleの名前空間の階層に合わせてStandardErrorを継承することが多いようだ
例外クラス名そのものでエラーの原因を示す
> 例外オブジェクトに自前メッセージや自前スタックトレースを付け加えることもできるけど、例外クラス名そのものがズバリのエラーの原因を示している、という例も多い。というか、それが多数派。
RSpec の例
`RSpec::Configuration::MustBeConfiguredBeforeExampleGroupsError < StandardError` ```ruby
class Configuration
include RSpec::Core::Hooks
class MustBeConfiguredBeforeExampleGroupsError < StandardError; end
``` ## 補遺 > * [Rubyの組み込み例外クラスを調べる | Kwappa研究開発室](http://randd.kwappa.net/2011/02/07/250)
> * [Rubyの例外処理の挙動と例外の階層について — ぺけみさお](http://www.xmisao.com/2014/02/11/ruby-exception-tips.html)
[/markdown]