タイトルの通り、Rubyで独自例外を定義するときはExceptionではなく、StandardError を継承するしきたりとなっています。 # `Exception`ではなく class MyError1 < Exception; end # `StandardError`. class MyError2 < StandardError; end 理由をコードでみてみます。 Exception を継承した場合 class MyError1 < Exception; end begin raise MyError1 rescue => e puts "Exception handled! #{e}" end # => MyError1: MyError1 MyError1 がrescue節でハンドリングされてませんね。こうしてみるとどうでしょう。 class MyError1 < Exce
![Rubyで独自例外を定義するときはStandardErrorを継承する - Hack Your Design!](https://cdn-ak-scissors.b.st-hatena.com/image/square/57dbbf98bc338ad1ad07b986920c22b24e8e6eba/height=288;version=1;width=512/https%3A%2F%2Fblog.toshimaru.net%2Ficon.png)