下面是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>'这个程序运行良好..它不会对我造成混乱..但我想知道这些错误的原因,这样我就可以处理它。
发布于 2017-09-03 02:36:47
Kernel#exit会抛出一个异常来终止程序,这看起来就是您所询问的异常消息:
Ruby通过引发SystemExit异常来启动
脚本的终止。此异常可能会被捕获。
至于堆栈跟踪的"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,尽管它们可能只是记录/输出并重新引发它(正如在一些答案中看到的,这是好的),这一切都只是猜测,没有深入研究代码(它甚至可能不在这个gem中)。
https://stackoverflow.com/questions/46016622
复制相似问题