Ruby中未处理的异常

问题描述 投票:2回答:1

我是第一次从事红宝石项目。除了需要注册一个未处理的异常处理程序外,我已经做了所有需要工作的工作,因此,如果发生无法由救援人员处理的崩溃,但我看不到是否有可能,则可以触发某些操作。

我已经完成了许多其他语言的编写,例如在Python中,我已经完成了以下工作:

sys.excepthook = MyClass._unhandledCrashHandler

我在Ruby中找不到任何等效的方法。这可能吗?

应该提到的,我正在编写一个Ruby库,所以这个想法是当主ruby应用程序初始化我的库时,该库设置了已处理的异常处理程序,然后,如果主应用程序崩溃,该库就会崩溃。这是我在python和许多其他语言中完成的工作,没有问题,但是看不到在Ruby中执行此操作的任何方法。

ruby exception unhandled-exception
1个回答
0
投票

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

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

将在其中抢救所有标准异常并显示一些诊断输出的位置。您可以在rescue块中执行所需的任何操作。任何未捕获的异常都会自动上升到您的顶层。

这必须是您的Ruby应用程序的顶级代码。

与您在Ruby中讨论的最接近的是您可以定义的at_exit处理程序,但这在每种退出情况下都可以运行,而不仅仅是未捕获的异常。

© www.soinside.com 2019 - 2024. All rights reserved.