ちょっとこんがらがったので整理 先に結論 型指定なしで rescue すると、 StandardError のサブクラスのみ catch する アプリケーションレベルでの標準的なエラーは RuntimeError のサブクラス RuntimeError は、StandardError のサブクラス なので、アプリケーション内で独自の例外を書く場合、普通は RuntimeError を使ったほうが良い 1.8 系の場合 Timeout::Error は、StandardError のサブクラスではない raise 関数に型を渡さない時に発生する例外は、 RuntimeError