カスタム例外の作成

Rubyでは、独自のエラー処理が必要な場合に「カスタム例外(独自例外クラス)」を作成して、より明確で意図した例外処理を実装できます。Rubyの例外はすべて Exception クラスを継承したオブジェクトですが、一般的には StandardError を継承してカスタム例外を定義するのが一般的です。


1. カスタム例外クラスの作成方法

カスタム例外クラスは以下のように定義します。

ruby
class MyCustomError < StandardError end

このように StandardError を継承することで、通常の rescue ブロックで補足可能な例外として機能します。


2. raise によるカスタム例外の発生

定義したカスタム例外を使用して、意図的に例外を発生させることができます。

ruby
def divide(a, b) raise MyCustomError, "0で割ることはできません" if b == 0 a / b end

このコードでは、b が 0 のときに MyCustomError を発生させています。


3. rescue によるカスタム例外の捕捉

発生したカスタム例外は、通常の例外と同様に rescue 節で捕捉できます。

ruby
begin result = divide(10, 0) rescue MyCustomError => e puts "エラーが発生しました: #{e.message}" end

この場合、MyCustomError が発生するとメッセージが表示され、プログラムが異常終了しないように制御できます。


4. カスタム例外に独自の属性やメソッドを追加する

例外クラスには独自の情報を付加することも可能です。

ruby
class InvalidDataError < StandardError attr_reader :code def initialize(message = "不正なデータ", code = 1001) super(message) @code = code end end begin raise InvalidDataError.new("データ形式が無効です", 2002) rescue InvalidDataError => e puts "エラーコード: #{e.code}, メッセージ: #{e.message}" end

このように、エラーの種類や状態に応じて追加情報を持たせることで、より高度なエラーハンドリングが実現できます。


まとめ

要素 説明
定義方法 class CustomError < StandardError
発生方法 raise CustomError, "エラーメッセージ"
捕捉方法 rescue CustomError => e
拡張性 属性やメソッドの追加が可能

Rubyにおけるカスタム例外は、エラーの意図を明確にし、プログラムの堅牢性と保守性を高めるための重要な手法です。

生成日:2025/05/03