Ruby中未处理的异常

h22fl7wq  于 2023-05-17  发布在  Ruby
关注(0)|答案(1)|浏览(95)

这是我第一次参与Ruby项目。我已经得到了我需要工作的一切,除了我想能够注册一个未处理的异常处理程序,这样我就可以在发生崩溃时触发一些没有被救援处理的东西,但我不知道这是否可能。
我用过很多其他语言,比如Python,我做了以下几点:

sys.excepthook = MyClass._unhandledCrashHandler

我在Ruby中找不到任何等价的东西来做这件事。这可能吗?
应该提到的是,我正在写一个Ruby库,所以我的想法是当主Ruby应用初始化我的库时,库设置已处理的异常处理程序,然后如果主应用崩溃,库就会崩溃。这是我在python和许多其他语言中所做的,没有问题,但在Ruby中看不到任何方法。

s4n0splo

s4n0splo1#

Ruby没有通用的处理程序,而是 Package 了可能生成异常的代码。例如:

begin
  # ... Do stuff
rescue => e
  $stderr.puts("[%s] %s" % [ e.class, e ])
  $stderr.puts(e.backtrace.join("\n"))
end

在那里,它可以挽救所有标准异常并显示一些诊断输出。你可以在rescue块中做任何你想做的事情。任何未捕获的异常将自动冒泡到顶层。
这必须是Ruby应用程序的顶层代码。
在Ruby中,与您所谈论的最接近的是您可以定义的at_exit处理程序,但它在每个退出场景中运行(除了用exit!终止程序),而不仅仅是未捕获的异常。

相关问题