0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Rubyの例外と rescue の範囲まとめ

0
Last updated at Posted at 2026-01-04

Rubyの例外と rescue の範囲まとめ

rescue の正体

begin
  # 処理
rescue
  # ここ
end

rescue は 何も指定していないと、
StandardError とそのサブクラスだけを捕まえるというルールがある。
これは省略形で、実際にはこう書かれているから!

rescue StandardError

StandardError とそのサブクラスだけを捕まえる

Exception
 ├── StandardError    rescue がデフォルトで捕まえる
     ├── ArgumentError
     ├── RuntimeError
     └── ...
 ├── ScriptError      rescue では捕まえない
 ├── NoMemoryError
 └── SystemExit

試験用・超重要まとめ

rescue 単体 = rescue StandardError
これを覚えておけば即答できる。

なぜ Exception を rescue しないの?

理由は 危険だかららしい。
SystemExit(exit)
NoMemoryError(メモリ不足)

まで捕まえてしまうと、プログラムが正常に終了できなくなる。

だから Ruby はデフォルトで StandardError だけだって。

1.Exception(すべての例外の親)

Rubyの全エラーの大元
直接使うことはほぼない

ポイント

rescue 単体では 捕まらない
捕まえるには rescue Exception と書く必要がある(非推奨)

2.StandardError(通常のエラー)

プログラム実行中によく起きるエラー
rescue が デフォルトで捕まえる

2-1.ArgumentError

def f(x); end
f(1, 2)
# => ArgumentError

意味
・引数がおかしい
・数が違う
・値の形式が違う

試験ワード

「引数」

2-2.RuntimeError

raise
# => RuntimeError

意味
Rubyが用意した分類に当てはまらない一般的なエラー

raise を何も指定せずに使うとこれ

試験ワード

「汎用エラー」

2-3.NoMethodError

nil.foo
# => NoMethodError

意味
そのメソッドは存在しない
nil にメソッド呼んだ

試験ワード

「存在しないメソッド」

3.ScriptError(コード自体が壊れてる)

end
end
# => ScriptError

意味
プログラムの構造がおかしい
文法ミス
読み込み失敗

代表例

・SyntaxError
・LoadError

※rescue では捕まえない

試験ワード

「書き方が間違っている」

4.SystemExit(プログラム終了)

exit
# => SystemExit

意味
プログラムを終了しろ、という合図

正常終了も含む

※rescue で捕まえない
(捕まえると終了できなくなる)

試験ワード

「exit」

5.

NoMemoryError(メモリ不足)

a = []
loop { a << "x" * 10_000_000 }
# => NoMemoryError

意味
・メモリが足りない
・システム的に危険

捕まえてもどうにもならない

※rescue で捕まえない

試験ワード

「メモリ不足」

1行ずつ覚えるなら

ArgumentError → 引数ミス

NoMethodError → メソッドない

ScriptError → 書き方ミス

SystemExit → exit

NoMemoryError → メモリ不足

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?