Threadで例外が発生した場合終了する

Rubyで最近Threadを使い始めた。
で問題があって困っている。


Thread内では例外が発生しても終了しない。
例えば以下のソースでfooは存在しないので、通常ならばNameError例外が発生する。
しかし、以下の様にスレッド内では処理が止まるだけで問題なく動きつづける。

def hoge
    "hoge"
end

Thread.start{
    p hoge #=>"hoge"
    p foo  #=>ここで処理が止まる。 
}


で今日、本を見ていて例外を発生させる方法があったのでメモ。
Thread.abort_on_exceptionをtrueにすればいい。

Thread.abort_on_exception = true  #=>追加

def hoge
    "hoge"
end

Thread.start{
    p hoge #=>"hoge"
    p foo  #=>ここで例外が発生する
}