下面是gtk结束操作调用的代码 - >
def on_main_window_destroy(object)
begin
$client.send(':exit')
Thread.kill $client.response
rescue
puts 'exiting'
end
Thread.kill $receiving_message
Gtk.main_quit()
exit
end
导致此输出。
app.rb:81:in `exit': exit
from app.rb:81:in `on_main_window_destroy'
from /home/user/.gem/ruby/2.4.0/gems/gobject-introspection-3.1.8/lib/gobject-introspection/loader.rb:110:in `invoke'
from /home/user/.gem/ruby/2.4.0/gems/gobject-introspection-3.1.8/lib/gobject-introspection/loader.rb:110:in `block in define_singleton_method'
from app.rb:97:in `<main>'
该程序工作正常..它并没有给我造成混乱..但我想知道这些错误的原因,以便我可以处理它。
答案 0 :(得分:1)
Kernel#exit
引发了终止程序的异常,看起来像是你要问的异常消息:
通过引发SystemExit异常来启动Ruby脚本的终止。可能会发现此异常。
对于堆栈跟踪的"block in define_singleton_method"
部分,虽然ruby有define_singleton_method
,但如果查看指定文件的第110行,您将看到您所在的方法也称为define_singleton_method
,您在该方法的块内:
def define_singleton_method(klass, name, info)
# ...
singleton_class.__send__(:define_method, name) do |*arguments, &block|
arguments, block = prepare.call(arguments, &block) # <<< Line 110
# ...
end
end
我不确定为什么你实际上看到的输出而不是像往常那样只是默默地退出,有可能是代码中的某个地方,有些东西正在拯救基地Exception
,而不是StandardError
,这是generally a bad idea,虽然它们可能只是记录/输出并重新提升它(正如其中一些答案中所见,可以),它全部都是只是猜测没有深入挖掘代码(它甚至可能不在这个宝石中)