catch
キャッチ(例外処理)
意味 スコープを越えた大域脱出
catchとは?
catchは、throwと組み合わせて使用する制御構造です。特定の条件下でプログラムの実行を中断し、指定したcatchブロックまで処理を移動させる(大域脱出する)ために使用します。例外処理とは異なり、エラー状態を表すものではありません。
catchの具体的な使い方
catchとthrowを使用した制御フロー
def find_even(numbers)
catch(:found) do
numbers.each do |num|
throw :found, num if num.even?
end
nil # 偶数が見つからなかった場合
end
end
numbers = [1, 3, 5, 8, 11, 13]
result = find_even(numbers)
if result
puts "最初に見つかった偶数: #{result}"
else
puts "偶数は見つかりませんでした"
end
👇出力結果
最初に見つかった偶数: 8
この例では、catchとthrowを使用して配列内の最初の偶数を見つけます。偶数が見つかるとthrowで即座にcatchブロックを抜け、その値を返します。これにより、配列全体を走査せずに済み、効率的に処理を終了できます。
ネストしたループからの脱出
def find_target(matrix, target)
catch(:found) do
matrix.each_with_index do |row, i|
row.each_with_index do |element, j|
if element == target
throw :found, [i, j]
end
end
end
nil # targetが見つからなかった場合
end
end
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
result = find_target(matrix, 5)
if result
puts "ターゲット5の位置: 行#{result[0] + 1}, 列#{result[1] + 1}"
else
puts "ターゲットは見つかりませんでした"
end
👇出力結果
ターゲット5の位置: 行2, 列2
この例では、2次元配列(マトリックス)内で特定の値を検索し、その位置を返します。catchとthrowを使用することで、ネストしたループから簡単に脱出でき、目的の値が見つかった時点で処理を終了できます。
catchに関するよくある質問
catchが学べる書籍の紹介
「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、Rubyのcatchやclass CustomError < StandardError、begin、raise、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。
よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。
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」カテゴリーが追加されましました!