我正在尝试使用 ruby 编写一个双线程客户端,一个线程从套接字读取数据并将其打印出来,另一个线程读取本地数据并将其发送到远程服务器。我发现的问题是 Ruby 似乎无法在线程中捕获错误,这是一个示例:
#! /usr/bin/ruby
Thread.new {
loop {
$stdout.puts "hi"
abc.puts ef
sleep 1
}
}
loop {
sleep 1
}
显然,如果我在线程之外键入abc.puts ef
代码,将永远不会运行,因为 Ruby 会报告“未定义的变量 abc”。但是,如果它在线程内,则没有错误报告。我的问题是,如何让 Ruby 捕获这样的错误?或者至少,报告某个线程中有问题?