{category}

Ruby - 例外の基本

begin

ビギン(例外処理

意味 例外処理の開始


beginとは?

beginは、例外が発生する可能性のあるコードブロックを定義するために使用するキーワードです。このブロック内でエラーが発生した場合、対応するrescueブロックで捕捉できます。

beginの具体的な使い方

複数の例外を処理する例外処理

begin
  # 例外が発生する可能性のあるコード
  random_number = rand(3)
  case random_number
  when 0
    1 / 0  # ZeroDivisionError
  when 1
    [].fetch(5)  # IndexError
  when 2
    Integer('abc')  # ArgumentError
  end
rescue ZeroDivisionError
  puts "0での除算が行われました"
rescue IndexError
  puts "配列の範囲外にアクセスしました"
rescue ArgumentError
  puts "不正な引数が渡されました"
end

👇出力結果

0での除算が行われました

この例では、複数の種類の例外を処理する方法を示しています。beginブロック内でランダムに異なる例外を発生させ、それぞれの例外に対して適切なrescue節で処理を行っています。これにより、発生する可能性のある様々な例外に対して、個別に対応することができます。

ensure節を使用した例外処理

file = nil
begin
  file = File.open('example.txt', 'w')
  file.write('Hello, World!')
  1 / 0  # 意図的に例外を発生させる
rescue ZeroDivisionError
  puts "エラーが発生しましたが、ファイルは正常に書き込まれています"
ensure
  file.close if file
  puts "ファイルが正常にクローズされました"
end

👇出力結果

エラーが発生しましたが、ファイルは正常に書き込まれています
ファイルが正常にクローズされました

この例では、ensure節を使用して、例外の発生有無に関わらず必ず実行される処理を記述しています。ファイルの操作を行う際に、例外が発生してもファイルを確実にクローズするために使用されます。これにより、リソースの適切な解放を保証することができます。

beginに関するよくある質問

Q. beginブロックは必須ですか?
A. メソッド全体や、do...endブロック全体で例外を捕捉する場合は、beginを省略できます。
Q. 複数の例外を扱うには?
A. 複数のrescue節を使用するか、rescue節で例外クラスを|で区切って指定します。
Q. ensureとは何ですか?
A. ensureブロックは、例外の有無に関わらず必ず実行されるコードを記述するために使用します。
Q. elseブロックの役割は?
A. elseブロックは、例外が発生しなかった場合に実行されるコードを記述するために使用します。

beginが学べる書籍の紹介

「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、Rubyのbeginやrescue、else、throw、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。

よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。

1日5分の暗記でプログラミンが身に付く!プログラミング単語帳 公式ストアで発売中!

HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。


Rubyを学べる「プログラミング単語帳」アプリ

プログラミング単語帳がアプリになりました!Rubyはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。

収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。

いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。

2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!

2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!


関連するそのほかの単語

rescue

例外の捕捉と処理

種類: 例外の基本

else

例外が発生しなかった場合の処理

種類: 例外の基本

throw

例外を意図的に発生させる

種類: 例外の捕捉と発生

kind_of?

is_a?のエイリアス

種類: 継承

all?

全ての要素が条件を満たすか確認

種類: イテレーションとEnumerator