我想使用ruby編寫雙線程客戶端,一個線程從套接字讀取數據並將其打印出來,另一個線程讀取本地數據並將其發送到遠程服務器。我發現的問題是,它看起來像紅寶石不能在一個線程中捕獲的錯誤,這裏有一個例子:如何讓Ruby捕獲線程中的語法錯誤
#! /usr/bin/ruby
Thread.new {
loop {
$stdout.puts "hi"
abc.puts ef
sleep 1
}
}
loop {
sleep 1
}
顯然,線程之外,如果我輸入abc.puts ef
的代碼,因爲紅寶石將永遠不會運行會報告「未定義的變量ABC」。但是,如果它在一個線程內,則沒有錯誤報告。我的問題是,如何讓Ruby捕獲像這樣的錯誤?或者至少,在一個線程內報告一些錯誤?
'SyntaxError'不會引發,而是'NameError'。 – falsetru